快速排序QuickSort——C/C++


void QuickSort(int a[],int low,int high); //對a[low]到a[high]由小到大排序
void QuickSort(int a[],int low,int high) { int pivot; int i=low,j=high; if(low<high){ pivot = a[low];    //將第一個元素作為樞軸 //接下來進行第一次partition
        while(i<j){ while(i<j && a[j]>=pivot)    //從右往左找到第一個小於樞軸的數
                j--; if(i<j){    //將該數移動到左指針的位置
                a[i] = a[j]; i++; } while(i<j && a[i]<pivot)    //從左往右找到第一個大於等於樞軸的數
                i++; if(i<j){    //將該數移動到右指針的位置
                a[j] = a[i]; j--; } } a[i] = pivot;    //循環退出時i == j即樞軸的位置 //遞歸處理當前樞軸的左右兩部分
        QuickSort(a,low,i-1); QuickSort(a,i+1,high); } } /* 算法分析: time-complexity: 最好情況下時間復雜度為O(nlog2n),待排序列接近無序,算法效率越高。 最壞情況下時間復雜度為O(n2),待排序列月接近有序,算法效率越低。 平均情況下時間復雜度為O(nlog2n); space-complexity O(log2n) *

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM