快排
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| void mysort(int l, int r) { if (l == r) return;
int mid = (l + r) / 2; mysort(l, mid); mysort(mid + 1, r);
int i = l; int j = mid + 1; int k = l; while (i <= mid && j <= r) { if (a[i] <= a[j]) { b[k++] = a[i++]; } else { b[k++] = a[j++]; } } while (i <= mid) { b[k++] = a[i++]; } while (j <= r) { b[k++] = a[j++]; } for (int t = l; t <= r; t++) { a[t] = b[t]; } }
|
归并排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| void mysort2(int l, int r) { if (l >= r) return; int mid = (l + r) / 2; int i = l; int j = r; int flag = a[i]; while (i<j) { while (i < j && flag <= a[j]) { j--; } a[i] = a[j]; while (i < j && a[i] <= flag) { i++; } a[j] = a[i]; } a[i] = flag; mysort2(l, i); mysort2(i + 1, r); }
|
Welcome to my other publishing channels