C 實現堆排序

2021-07-23 10:23:26 字數 951 閱讀 9445

c++實現的堆排序,分為三個函式實現:

堆調整函式:保持最大/最小堆

堆構建函式:利用堆調整函式建立乙個最大/最小堆

堆排序函式:每次取堆頂元素交換至陣列最後,並將size減一,然後調整堆頂保持最大/最小堆

堆調整函式:

//調整堆為陣列a,需要調整的結點序號為i,堆大小為size

void heapadjust(int* a, int i, int

size)

}

堆構建函式

void buildheap(int a, int

size)

}

堆排序函式

void heapsort(int a, int

size)

}

完整**:

#include using namespace std;

void swap(int a, int i, int j)

void heapadjust(int* a, int i, int

size)

}void buildheap(int a, int

size)

}void heapsort(int a, int

size)

}void print(int a, int

size)

int main(int argc, char** argv)

; cout << "排序之前的序列為:"

<< endl;

print(a, 6);

heapsort(a, 6);

cout << "排序之後的序列為:"

<< endl;

print(a, 6);

return

0;}

c 實現堆排序

include include include using namespace std 對比枝節點和左右子節點,將比較大的節點放置於枝節點 template int heapadjust t t,int i,int size if rightchild size t rightchild t max...

C 實現堆排序

堆排序是一種具有合併排序和插入排序共同優點的排序方法。它的時間複雜度為o nlgn 它也是一種原地排序演算法 在任何時候,陣列中只有常數個元素儲存在輸入陣列以外。要介紹堆排序首先要介紹什麼是堆。1.建堆 堆資料結構是一種陣列物件,它可以被視為一顆完全二叉樹,如下圖。右邊陣列表示的堆可以用左邊的完全二...

堆排序(C 實現)

堆排序執行時間 n lgn 它是一種原地 in place 排序演算法 在任何時候,陣列中只有常數個元素儲存在陣列外。堆的資料結構不至少在堆排序中有用,還可以構成乙個有效的優先佇列。二叉堆資料結構是一種陣列物件,它可以被看做是一棵完全二叉樹。樹中的每個節點與陣列中存放該節點值的那個元素對應。除了最後...