QUICK SORT


int partition(int A[] , int len)
{
        int pivot = A[0];

        int low = 0;
        int high = len-1;
        while(low < high){
                for(; high>low && A[high] >= pivot; high--);
                        A[low] = A[high];
                for(; high>low && A[low] <= pivot; low++);
                        A[high] = A[low];

        }

        A[low] = pivot;

        return low;
}

void quicksort(int A[], int len)
{
        if(len == 0 || len == 1)
                return;

        int index = partition(A,len);

        quicksort(A, index);
        quicksort(A+index+1, len-index-1);
}
int main()
{
        int A[] = {1,5,4,7,9,2,3,6,8};

        int len = sizeof(A)/sizeof(A[0]);

        for(int i = 0; i < len ; i++)
                printf("%d ", A[i]);

        printf("\n");
        quicksort(A,len);
        for(int i = 0; i < len ; i++)
                printf("%d ", A[i]);

        printf("\n");
        return 1;
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 算法相關GitHub持續(xù)更新,歡迎打臉~ 排序算法之選擇排序 時間復雜度:O(n2) 空間復雜度:O(1) 是否穩(wěn)...
    FromThenOn閱讀 409評論 0 1
  • Merge-sort, is ideally suitedfor very large data sets, wh...
    Zihowe閱讀 187評論 0 0
  • 快速排序是一種分治算法,將一個數組分成兩個子數組,將兩部分獨立的排序。快速排序和歸并排序是互補的:歸并排序將數組分...
    sleepyjoker閱讀 326評論 0 0
  • 1101.Quick Sort 題目分析 Input:第一行:一個正整數N(N<=100000)第二行:N個互不相...
    81f83b4769e0閱讀 561評論 0 0
  • 弗瑞德說過:寧愿花時間去修煉不完美的自己,也不要浪費時間去期待完美的別人! 打卡群的日常基本已形成,很開心在這里一...
    艷霞Rainbow閱讀 365評論 0 1