1. 程式人生 > >排序演算法----快速排序

排序演算法----快速排序

排序演算法的思路是通過一趟排序將陣列分為兩部分,一部分比另一部分都要小,以此遞迴即可得到最終的排序。複雜度nlogn

void Qsort(int a[], int low, int high)//low high代表最低的下標和最高的下標
{
    if(low >= high)
    {
        return;
    }
    int first = low;//將first初始化為最低下表
    int last = high;//將last初始化為最高下標
    int key = a[first];//將第一個數記作參考值(即比較大小以此數為基準)
 
    while(first < last)//遍歷開始
    {
        //將大於key的放在key後面
        while(first < last && a[last] >= key)
        {
            --last;
        }
 
        a[first] = a[last];//將小於key的值放到首位
         //將小於key的放在key前面
        while(first < last && a[first] <= key)
        {
            ++first;
        }
         
        a[last] = a[first];    
    }
    //迴圈結束將a[first]賦值key
    a[first] = key;
    Qsort(a, low, first-1);//遞迴對各部分排序
    Qsort(a, first+1, high);
}