随笔分类 - 算法
摘要:void Swap(int *i, int *j){ int temp = *i; *i = *j; *j = temp;}void MinHeapFixup(int a[], int i) { for (int j = (i - 1) / 2; (j >= 0 && i != 0)&& a[i] > a[j]; i = j, j = (i - 1) / 2) Swap(&a[i], &a[j]); }//在最小堆中加入新的数据nNum void MinHeapAddNumber(int a[], int n, int nNum) {
阅读全文
摘要:快速排序输采用分而治之的策略,将一个串分为两个串,分别进行排序具体实现方法:在数组中找到基准pivot分区partition操作:将所有小于pivot的元素放在pivot的前面,将所有大于pivot的元素放在pivot的后面递归recursive操作:将两个子数组进行上面类似的排序效率分析:时间复杂度:最佳好情况O(nlogn),数组中的每个元素都需要被循环遍历一次,以找到其位置,需要O(n),而每次遍历时都将数组给分区成2个部分,需要O(logn);最坏情况O(n^2)空间复杂度:最好情况O(logn),最坏情况O(n)实现代码: void partition(int *arr,int l.
阅读全文
摘要:今天在csdn上看到一篇博文,介绍如何来左旋转字符串:abcdef->defabc,时间复杂度o(n),空间复杂度o(1)具体实现方法:将abc def分成2部分abc,和def,首先将abc反转,再将def反转,最后将整个字符串反转1.abc def->cba def2.cba def->cbafed3.cbafed->def cba具体实现方法:Reserve(int *arr,int b,int e){ for(;b<e;b++,e--) { int tmp=arr[b]; arr[b]=arr[e]; arr[e]=tmp; }}RightShift(in
阅读全文

浙公网安备 33010602011771号