C/C++ 快速排序实现

 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 }
posted @ 2019-12-12 08:33  Kaniso_Vok  阅读(357)  评论(0编辑  收藏  举报