堆排序
1.堆排序基本介紹
1.堆排序是利用堆這種數據結構而設計的一種排序算法,堆排序是一種選擇排序,它的最壞,最好,平均時間複雜度均爲O(nlogn),它也是不穩定排序。
2.堆是具有以下性質的完全二叉樹:每個結點的值都大於或等於其左右孩子結點的值,稱爲大頂堆, 注意 : 沒有要求結點的左孩子的值和右孩子的值的大小關係。
3.每個結點的值都小於或等於其左右孩子結點的值,稱爲小頂堆
4.大頂堆舉例說明
映射到數組裏面是這個樣子:
大頂堆特點:
arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2] // i 對應第幾個節點,i從0開始編號
5.小頂堆舉例說明
小頂堆特點:
arr[i] <= arr[2i+1] && arr[i] <= arr[2i+2] // i 對應第幾個節點,i從0開始編號
6.一般升序採用大頂堆,降序採用小頂堆