1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| void quick_sort(int q[],int l,int r) { if (l >= r) return; //递归边界 int i = l - 1, j = r + 1, x = q[l]; //这里的初值分别设为l-1,r+1是因为 //while中是do,while结构。先使i+1,j-1指向数组第一个和最后一个位置,再开始判断。 while (i < j) { do i++; while (q[i] < x); do j--; while (q[j] > x); if (i < j) swap(q[i], q[j]); //交换 } quick_sort(q, l, j), quick_sort(q, j + 1, r); //递归左右子序列 }
|