#includeusing namespace std;
//堆排序演算法的步驟:
//1、把無序陣列構建成二叉堆。需要從小到大排序,則構建成最大堆;否則,構建成最小堆。
//2、迴圈刪除堆頂元素,替換到二叉堆的末尾,調整堆產生新的堆頂。
//"下沉"調整
void downadjust(int array,int parentindex,int length)
//如果父結點大於任何乙個孩子的值,則直接跳出
if(temp>=array[childindex])
break;
//無需真正交換,單向賦值即可
array[parentindex]=array[childindex];
parentindex=childindex;
childindex=2*childindex+1;
} array[parentindex]=temp;
} void printheap(int array,int length)
cout<<"建成的堆是:";
printheap(array,length);
//2、迴圈刪除堆頂元素,移到集合尾部,調整堆產生新的堆頂
for(int i=length-1;i>0;i--)
} int main()
; int length=sizeof(array)/sizeof(array[0]);
heapsort(array,length);
cout
return 0;
}
c 堆排序的實現
今天重溫了一下各大排序。打算寫一下堆排序,首先要了解它能幹什麼,有什麼區別,定位,怎麼實現 1.能幹什麼 對資料進行排序。廢話了 2.和別的排序有什麼區別 比插入,冒泡,選擇排序效率高,但是在效能低於快排,它屬於不穩定排序 3.定位 適合於大量的資料的排序。時間複雜度為o nlgn 即使在最好和最差...
堆排序的C實現
這幾天有點牴觸情緒,看過了快速排序還有一些別的東西,但是一點都不想寫有點複雜的 0 0拖到了今天終於寫了前幾天就應該自己寫一下的堆排序,完全用c語言寫的,下面把 貼一下。很多地方寫得並不好,不過已經經過了測試,可以正確執行。1 堆排序 2 void percolatedown int a,int i...
c 實現堆排序
include include include using namespace std 對比枝節點和左右子節點,將比較大的節點放置於枝節點 template int heapadjust t t,int i,int size if rightchild size t rightchild t max...