日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HeapSort

發布時間:2025/4/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HeapSort 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. HeapSort : ?  選擇排序、不穩定排序

2. Time Complexity : ?O(nlongn)

3. Step:

  1. 最大堆調整

  2. 創建最大堆

  3. 堆排序

?

4. Code:

1 void HeapAdjust(int src[], int i, int len) 2 { 3 int l = 2 * i + 1; //左孩子 4 int r = 2 * i + 2; //右孩子 5 int largest = 0; 6 7 if (l < len && src[l] > src[i]) 8   largest = l; 9 else 10   largest = i; 11 12 if (r < len && src[r] > src[largest]) 13   largest = r; 14 15 if (largest != i) { 16   int tmp; 17 18   tmp = src[i]; 19   src[i] = src[largest]; 20   src[largest] = tmp; 21 22   HeapAdjust(src, largest, len); //swap可能破壞原來已是最大堆的子樹,遞歸調整子樹 23 } 24 } 25 26 void HeapSort(int src[], int len) 27 { 28 int i; 29 30 for (i = len / 2; i >= 0; --i) 31   HeapAdjust(src, i, len); //創建最大堆,len/2以后全為葉子節點,即已為最大堆,則調整len/2前的節點 32 33 for (i = len - 1; i >=0; i--) { 34   int tmp; 35 36   tmp = src[i]; 37   src[i] = src[0]; 38   src[0] = tmp; 39 40   len--; 41   HeapAdjust(src, 0, len); //遞歸排序,每次遞歸找出最大數,有序數加一,len-- 42 } 43 }

轉載于:https://www.cnblogs.com/robin-he0221/archive/2012/09/02/HeapSort.html

總結

以上是生活随笔為你收集整理的HeapSort的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。