5排序 5堆排序

2021-09-02 15:26:16 字數 567 閱讀 8234

#include using namespace std;

int n = 10;//元素個數

int b[11] = ;//定義全域性陣列

void shift_down(int i)

else flag = 1; //下乙個移動的結點是i,即沒有被更改

}//函式原理:對傳入的i進行下移,i移動到比它的兒子都小為止(最壞情況是移動到葉),否則他與左右兒子中的較小值進行交換

return ;

}int deletemax()

void heap_sort()

void selection_sort(int r,int n)

}int main()

/***

heap_sort:

9 2 7 3 1 6 8 4 5 10

1 2 3 4 5 6 7 8 9 10

selection_sort:

5 8 3 1 2 9 7 6 4 10

1 2 3 4 5 6 7 8 9 10

***/

排序(5) 堆排序

1.堆 堆這種資料結構其實就是完全二叉樹,堆分為兩種,大頂堆和小頂堆。因此,堆是具有下列性質的完全二叉樹 每個節點的值都大於或等於其左右孩子節點的值稱為大頂堆 每個節點的值都小於或等於其左右孩子節點的值稱為小頂堆。2.堆排序演算法 堆排序就是利用堆這種資料結構進行排序的方法。它的基本思想是 將待排序...

排序演算法 5 堆排序

這篇部落格從以下幾個方面來說 什麼是最大堆以及 實現 堆排序基礎 一次優化 提高效率 二次優化 原地堆排序,無需額外空間 1.什麼是最大堆以及 實現 這裡可以參考言簡意賅的部落格 堆與最大堆 2.堆排序基礎 import com.heap.maxheap import utils.createran...

排序演算法5 堆排序

堆排序是利用堆這種資料結構進行的排序。堆通常使用一維陣列來實現,是一種近似完全二叉樹的結構。堆排序分為大根堆和小根堆。堆排序滿足這樣的乙個特性 大根堆父節點的值總是大於子節點,小根堆的父節點值總是小於子節點。我們在拿到乙個陣列時,首先將它構造成為乙個大根堆 小根堆,這個過程我們叫做建堆。然後將根節點...