本文共 774 字,大约阅读时间需要 2 分钟。
这是一道代码填空题。
#includevoid swap(int a[], int i, int j){ int t = a[i]; a[i] = a[j]; a[j] = t;}int partition(int a[], int p, int r){ int i = p; int j = r + 1; int x = a[p]; while (1) { while (i < r && a[++i] < x); while (a[--j] > x); if (i >= j) { break; } swap(a, i, j); } /*______________________;*/ //代填语句 swap(a, p, j); return j;}void quicksort(int a[], int p, int r){ if (p < r) { int q = partition(a,p,r); quicksort(a,p,q-1); quicksort(a,q+1,r); }} int main(){ int i; int a[] = {5,13,6,24,2,8,19,27,6,12,1,17}; int N = 12; quicksort(a, 0, N-1); for(i = 0; i < N; i++) { printf("%d ", a[i]); } printf("\n"); return 0;}
草稿纸上把第一个Partition分析了一下,,不知道怎么抽抽了没想着要把基准值换过来……
还是掌握排序算法掌握的不熟!
转载地址:http://nvtai.baihongyu.com/