数据结构与算法
舟84
这个作者很懒,什么都没留下…
展开
-
快速排序的优化方法
//分为{<v}部分和{>=v}部分 template<typename T> int __partition(T arr[], int l, int r) { //优化一:采用随机数,避免近乎有序的数组使得快排递归树平衡度过低而退化为O(n^2) swap(arr[l], arr[rand() % (r - l + 1) + l]); T v = arr[l]; //arr[l+1...j] < v;arr[j+1...i] > v int j = l;原创 2020-07-07 15:52:49 · 150 阅读 · 0 评论 -
自顶向下归并排序的两种优化方式
template<typename T> void __merge(T arr[], int l, int mid, int r) { T *aux = new T[r - l + 1]; for (int i = l; i <= r; i++) aux[i - l] = arr[i]; int i = l, j = mid + 1; for (int k = l; k <= r; k++) { if (i > mid) { arr[k] = aux[j原创 2020-07-07 10:36:06 · 156 阅读 · 0 评论