// n为数组长度,1<=i<=n,函数结束后 左边<Ki<右边 void quickPass(int K[], int n, int i) { int l = 0, r = n - 1; int P = K[--i]; bool flag = true; while (l < r) { while (l < r && K[l] < P) l++; if (l < r) { if (flag) { K[i] = K[l]; flag = false; } else { K[r] = K[l]; r--; } } while (l < r && K[r] > P) r--; if (l < r) { K[l] = K[r]; l++; } } K[l] = P; } int main() { int K[] = {7, 5, 6, 1, 3, 2, 9}; cout << "K[] : "; for (int i = 0; i < 7; i++) cout << K[i] << " "; cout << endl; for (int i = 1; i <= 7; i++) { K[0] = 7;K[1] = 5;K[2] = 6;K[3] = 1;K[4] = 3;K[5] = 2;K[6] = 9; cout << "K[" << i << "]:" << K[i - 1] << ", after run: K[] : "; quickPass(K, 7, i); for (int i = 0; i < 7; i++) cout << K[i] << " "; cout << endl; } return 0; }