1. 程式人生 > >堆排序——C語言

堆排序——C語言

關於堆不做過多解釋(要說的話有點多....)要學堆排序的話對堆肯定有一定的理解。

首先從堆頂開始,自左向右依次標號的話(0..n),我們可以發現父子節點的關係

(首標為0時)i為父;則左子為2i+1;右子為2i+2;

要實現堆排序,

1:將無序堆變成有序。

2:堆頂元素與堆尾元素交換後,去掉堆尾(此時堆尾最大或者最小,不需要再調整),調整剩下的(因為前面交換首尾,所以堆得有序結構改變了,需要重新調整),使其變成一個有序堆。

(可能我說的不太詳細,具體請參照資料結構(C語言版)(第2版)嚴蔚敏老師的

本來想拍下來,貼上圖的.........但是一想,自己翻看,記憶更深刻!!!(實際...我懶.....)

下面貼上我的程式碼


結果圖


主要程式碼:


如有錯誤,歡迎指正