k z
4
y
z
y
4
0
2
1
3
2
1
3
1
0
2
1
3
2
1
3
图 11
图 12
15
执行(3)a[ z ]<k,z=z+1=2,a[2]<k,z=z+1=3,这时 z=y,不会执行(4),同时退出直到型循环,见图13。 然后做 a[ z ]=k,即a[ 3 ]=4,见图14,左边也排好了。
k
4
z y
k
4
z y
1
下面给出参考程序(分两页)
21
// ******************************************* // * 程 序:6_9.cpp * // * 作 者:ghq * // * 编制时间:2010年4月15日 * // * 主要功能:快速排序 * // ******************************************* #include <iostream> //预编译命令 using namespace std; void sort(int array[ ], int zz, int yy) //被调用函数,数组array,zz,yy为形参 { //函数体开始 int z,y,i,k; //定义变量 if ( zz<yy ) //如果 zz < yy ,则做下列 7 件事: { // 7 件事开始 z = zz; y = yy; k = array[ z ]; //第1件事 do{ //第2件事(开始) while(( z<y)&&(array[y]>=k)) y--; //2.1,右边的元素>=k,让 y 往中间移 if( z < y ) //2.2,右边的元素<k,让 { array[ z ] = array[ y ]; //array[ y ]送给 array[ z ], z = z+1; //同时让 z 往中间移 } while(( z< y) && (array[z] <= k)) z++; //2.3,左边的元素<=k,让 z 往中间移 if ( z < y ) //2.4,左边的元素>k, 让 array[ z ] 22 array[ y ] = array [ z ]; //送给array[ y ]