Quicksort

快速排序  也叫做分区排序  时间复杂度O(n*logn)  不稳定

分区排序,使得左侧子序列中的元素都小于基准元素,右侧子序列中的元素都大于等于基准元素

 

 1 #include<iostream>
 2 using namespace std;
 3 int Paritition(int (&a)[5],int low,int high){
 4     int pivotpos=low;
 5     int pivot=a[low];//基准元素 
 6     for(int i=low+1;i<=high;i++){//一个一个比较 
 7         if(a[i]<pivot){
 8             pivotpos++;
 9             if(pivotpos!=i){
10                 int temp=a[i];
11                 a[i]=a[pivotpos];
12                 a[pivotpos]=temp;
13             }
14         }
15     }
16     a[low]=a[pivotpos];
17     a[pivotpos]=pivot;
18     return pivotpos;
19 }
20 void Quicksort(int (&a)[5],int left,int right){
21     if(left<right){
22         int pivotpos=Paritition(a,left,right);//排序并获得基准元素该在的位置下标
23         Quicksort(a,left,pivotpos-1);
24         Quicksort(a,pivotpos+1,right);
25     }
26 }
27 int main(){
28     int a[5]={9,8,7,6,5};
29     Quicksort(a,0,4);
30     for(int i=0;i<5;i++) cout<<a[i]<<endl; 
31     return 0;
32 }

 

上一篇:QuickSort(Java)


下一篇:快速排序