几种常见的排序的算法 C++
1.归并排序: 归并排序利用了递归的思想(以及分而治之的思想),将数组一分为二(0~mid),(mind+1~end)左右两个子数组,最后将两部分合并起来。 整体算术法时间复杂度为O(nlogn), 空间复杂度O (n) 。 #include<bits/stdc++.h> using namespace std; //归并过程 void merge(int arr[], int l, int mid, int r){ int help[r-l+1];//辅助数组 int i = 0; int lIndex = l; int rIndex = mid+1; while(lIndex <= mid && rIndex <= r){ help[i++] = arr[lIndex] < arr[rIndex] ? arr[lIndex++]:arr[rIndex++]; } //左边和右边肯定有一边到头了,不可能同时,因为每次只移动一边 while(lIndex <= mid){ help[i++] = arr[lIndex++]; } while(rIndex <= r){ help[i++] = arr[rIndex++]; } //将排好序的辅助数组赋值给原始数组,不需要返回值 for(i = 0; i < r-l+1; i++){ arr[l+i] = help[i]; } } /