1 #include<iostream>
2 using namespace std;
3 void qS(int *array,int left,int right){
4 if(left<right){ //快速排序的终止条件,当仅剩下一个元素则结束快速排序
5 int key=array[left];
6 int low=left,high=right;
7 while(low<high){
8 while(key<=array[high]&&low<high){ //8~11操作是从右边依次比较左边的元素,将小于目标值的元素置于左边
9 high--;
10 }
11 array[low]=array[high];
12 while(key>=array[low]&&low<high){ //12~15操作是从左边依次比较右边的元素,将大于目标值的元素置于右边
13 low++;
14 }
15 array[high]=array[low];
16 }
17 array[low]=key; //将目标值放置在空位,此时一轮快速排序结束,目标值的左边全部是小于他的,右边全部是大于它的
18 qS(array,left,low-1); //将目标值的左边元素集再进行快速排序
19 qS(array,low+1,right); //将目标值的右边元素集再进行快速排序
20 }
21 }
22
23 int main() {
24 int arr[]={33,14,2,444,23,444,132,55,0};
25 qS(arr,0,sizeof(arr)/sizeof(arr[0]-1));
26 for(int i=0;i<sizeof(arr)/sizeof(arr[0]);++i){
27 cout<<arr[i]<<' ';
28 }
29 return 0;
30 }