![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
i'm zaker
这个作者很懒,什么都没留下…
展开
-
十进制转换为其它进制
采用递归转换进制,优点是代码简洁。 #include <iostream> using namespace std; void conv(int num,int jinzhi) { if(num>=jinzhi) conv(num/jinzhi,jinzhi); cout<<num%jinzhi; } int main() { int num,jinzhi; cin>>num>>jinzhi; cout<<"转换后的结果为:"&原创 2022-03-06 11:21:07 · 134 阅读 · 0 评论 -
C++ 归并排序merge_sort
归并排序的时间复杂度:最好O(nlogn),平均O(nlogn),最坏O(nlogn)。归并排序是稳定的排序算法。 上code #include <iostream> using namespace std; void merge(int a[],int L,int M,int R) { const int ls = M - L; //这里实际上是L---M,因为传进来的M是M+1 const int rs = R - M + 1; //M+1--R int i=0, j=0, k=L原创 2021-10-06 11:49:58 · 91 阅读 · 0 评论 -
堆排序heap_sort
堆排序是利用了堆这种数据结构的性质来排序,时间复杂度:最好、平均、最坏的时间负载度都是O(nlogn)。基本思想是先把无序的数据构建为堆,然后把第一个元素和最后一个元素交换,交换过后,由于原来的堆结构被破坏,所以交换之后要把数据重新构建为堆。 上code #include <iostream> #include <algorithm> using namespace std; void swap(int& L, int& R) { int tmp = L; L原创 2021-10-06 21:52:42 · 102 阅读 · 0 评论 -
BFS和DFS解决迷宫问题
DFS: #include <iostream> using namespace std; int maze[80][80]; int v[80][80]; int dx[] = { 0,1,0,-1 }; //右、下、左、上 int dy[] = { 1,0,-1,0 }; int endx, endy; int startx, starty; int step=0; void dfs(int x, int y) { if (x == endx && y == endy)原创 2021-08-31 10:36:04 · 155 阅读 · 0 评论 -
无重复字符的最长子串
首先,我们要明确子串的概念。所谓“子串”,是指连续的子字符串。 采用滑动窗口的思想,可以简单快捷地求解问题。 #define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS #include <iostream> #include <hash_map> #include <algorithm> #include <string> using namespace std; int main() { hash_map<原创 2021-09-11 19:25:20 · 66 阅读 · 0 评论 -
贪心算法的理解
说说自己对贪心算法的理解 贪心算法的思想是每一步都做出最贪心的选择,从而希望达到最终的结果是最优的。贪心算法的优点是简单,但是缺点也很明显:不能保证最终结果是正确的,能否得出正确的结果可以说是靠运气。 例如:一个箱子里有很多纸币,这些纸币的面值是1元、6元、7元。要求从箱子里取出张数最少的且面值之和等于某个值得纸币。 当要凑够14元时,运用贪心算法可以得出正确的结果,只要取2张7元即可。 当要凑够18元时,运用贪心算法不能得出正确结果。贪心算法得到的结果是2张7元 + 4张1元,共6张纸币;正确答案应该是3原创 2021-09-01 11:26:28 · 366 阅读 · 0 评论