三种实现方法:
快速排序:
1 2 3 4 5 6 7 8 9 10 11 12
| void quick_sort(int l, int r, vector<int>& arr) { if(l >= r) return; int i = l - 1, j = r + 1, mid = arr[l + r >> 1]; while(i < j) { do i++; while(arr[i] < mid); do j--; while(arr[j] > mid); if(i < j) swap(arr[i], arr[j]); } quick_sort(l, j, arr), quick_sort(j + 1, r, arr); }
|
归并排序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| void merge_sort(int l, int r, vector<int>& arr, vector<int>& temp) { if(l >= r) return; int mid = l + r >> 1, i = l, j = mid + 1, k = 0; merge_sort(i, mid, arr, temp), merge_sort(j, r, arr, temp); while(i <= mid && j <= r) { if(arr[i] <= arr[j]) temp[k++] = arr[i++]; else temp[k++] = arr[j++]; } while(i <= mid) temp[k++] = arr[i++]; while(j <= r) temp[k++] = arr[j++]; for(int i = l, k = 0; i <= r; i++, k++) arr[i] = temp[k]; }
|
然鹅。。。以上两种方法都太菜了😳
最终解决方法:
1
| sort(arr.begin(), arr.end());
|
Over!😂