快速排序(Quick Sort)


快速排序

思路分析:快速排序采用雙向查找的策略,每一趟選擇當前所有子序列中的一個關鍵字作為樞紐軸,將子序列中比樞紐軸小的前移,比樞紐軸大的后移,當本趟所有子序列都被樞軸按上述規則划分完畢后將會得到新的一組更短的子序列,他們將成為下趟划分的初始序列集。

時間復雜度:最好情況(待排序列接近無序)時間復雜度為O(nlog2n),最壞情況(待排序列接近有序)時間復雜度為O(n2),平均時間復雜度為O(nlog2n)。

源代碼:

void QuickSort(int R[],int low,int high)
{
    int i,j,temp;
    i=low;
    j=high;
    if(low<high)
    {
        temp=R[low];    //設置樞軸
        while(i!=j)
        {
            while(j>i&&R[j]>=temp)
            {
                --j;
            }
            if(i<j)
            {
                R[i]=R[j];
                ++i;
            }

           while(i<j&&R[i]<temp)
            {
                ++i;
            }
            if(i<j)
            {
                R[j]=R[i];
                --j;
            }
        }
        R[i]=temp;
        QuickSort(R,low,i-1);
        QuickSort(R,i+1,high);
    }
}


免責聲明!

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



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