#include <cstdio>
int main() {
void MergeSort(int *a, int p, int q, int r);
const int MAXLEN = 10;
int a[MAXLEN] = {3, 8, 9, 1, 0, 2, 5, 7, 4, 6};
printf("befor sort:");
for(int i=0; i<MAXLEN; ++i) {
printf("%d ", a[i]);
}
putchar('\n');
MergeSort(a, 0, (0+MAXLEN)>>1, MAXLEN);
printf("after sort:");
for(int i=0; i<MAXLEN; ++i) {
printf("%d ", a[i]);
}
putchar('\n');
return 0;
}
void MergeSort(int *a, int p, int q, int r) {
if (p==q || q==r) return;
MergeSort(a, p, (p+q)>>1, q);
MergeSort(a, q, (q+r)>>1, r);
for (int i=q; i<r; ++i) {
int k = i;
int tmp = a[i];
for (int j=i-1; j>=p && a[j]>tmp; --j) {
a[j+1] = a[j];
k = j;
}
if (k == i) {
break;
}
else {
a[k] = tmp;
}
}
}
归并排序
最新推荐文章于 2024-04-28 12:18:26 发布