1 /* 2 时间:2015年9月26日21:34:10 3 描述:对数组a[]中元素排序 4 功能:快速排序 5 */ 6 # include7 8 int FindPos(int *, int, int); 9 void QuickSort(int *, int, int);10 11 int main(void)12 {13 int i;14 int a[6] = { 5, 8, 7, -9, 0, 6};15 QuickSort(a, 0, 5);//第二个参数是第一个元素的下标,第三个参数是最后一个元素的下标16 17 for (i=0; i<6; i++)18 printf("%d ", a[i]);19 printf("\n");20 21 return 0;22 }23 24 /*25 函数:void QuickSort(参数1, 参数2, 参数3)26 功能:快速排序的循环27 参数:1.数组地址。2.某一半元素的低位。3.高位28 返回值:无29 */30 void QuickSort(int * a, int low, int high)31 {32 int pos;33 if (low < high)34 {35 pos = FindPos(a, low, high);36 QuickSort(a, low, pos-1);37 QuickSort(a, pos+1, high);38 }39 }40 41 /*42 函数:int FindPos(参数1, 参数2, 参数3)43 功能:查找a[low]的位置44 参数:1.数组地址。2.某一半元素的低位。3.高位45 返回值:a[low]的位置,int型46 */47 int FindPos(int * a, int low, int high)48 {49 int val = a[low];50 while (low < high)51 {52 while (low < high && a[high] > val)//注意此处low < high不能丢!53 high--;54 a[low] = a[high];55 while (low < high && a[low] < val)56 low++;57 a[high] = a[low];58 }//循环终止时,low = high59 a[low] = val;60 return low;61 }62 63 /*64 在VC++6.0输出结果是:65 ----------------------------66 -9 0 5 6 7 867 Press any key to continue68 ----------------------------69 */