堆排序-快速排序

堆排序

  堆排序是利用這種數據結構而設計的一種排序算法,堆排序是一種選擇排序,它的最壞,最好,平均時間複雜度均爲O(nlogn),它也是不穩定排序。首先簡單瞭解下堆結構。

  堆是具有以下性質的完全二叉樹:每個結點的值都大於或等於其左右孩子結點的值,稱爲最大堆;或者每個結點的值都小於或等於其左右孩子結點的值,稱爲最小堆

堆排序基本思想及步驟:

堆排序的基本思想是:將待排序序列構造成一個大頂堆,此時,整個序列的最大值就是堆頂的根節點。將其與末尾元素進行交換,此時末尾就爲最大值。然後將剩餘n-1個元素重新構造成一個堆,這樣會得到n個元素的次小值。如此反覆執行,便能得到一個有序序列了

 

 

快速排序

  

1.基本思想

快速排序是一種分治的排序算法。它將一個數組分成兩個子數組,將兩部分獨立地排序。快速排序和歸併排序是互補的:歸併排序將數組分成兩個子數組分別排序,並將有序的子數組歸併以將整個數組排序;而快速排序將數組排序的方式則是當兩個子數組都有序時整個數組也就自然有序了。在第一種情況中,遞歸調用發生在處理整個數組之前;在第二種情況中,遞歸調用發生在處理整個數組之後。在歸併排序中,一個數組被等分爲兩半;在快速排序中,切分的位置取決於數組的內容。如圖