西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)其它知識 → 程序員必須知道的8大排序和3大查找

程序員必須知道的8大排序和3大查找

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:shan9liang時間:2012/5/11 9:51:01字體大小:A-A+

作者:shan9liang點擊:8913次評論:0次標(biāo)簽: 程序員

Java程序員appv2.3.0 官網(wǎng)安卓版
  • 類型:教育學(xué)習(xí)大。8.6M語言:中文 評分:10.0
  • 標(biāo)簽:
立即下載
5 頁 堆排序

4、堆排序


(1)基本思想:堆排序是一種樹形選擇排序,是對直接選擇排序的有效改進(jìn)。

堆的定義如下:具有n個元素的序列(h1,h2,...,hn),當(dāng)且僅當(dāng)滿足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi<=2i+1)(i=1,2,...,n/2)時稱之為堆。在這里只討論滿足前者條件的堆。由堆的定義可以看出,堆頂元素(即第一個元素)必為最大項(大頂堆)。完全二叉樹可以很直觀地表示堆的結(jié)構(gòu)。堆頂為根,其它為左子樹、右子樹。初始時把要排序的數(shù)的序列看作是一棵順序存儲的二叉樹,調(diào)整它們的存儲序,使之成為一個堆,這時堆的根節(jié)點的數(shù)最大。然后將根節(jié)點與堆的最后一個節(jié)點交換。然后對前面(n-1)個數(shù)重新調(diào)整使之成為堆。依此類推,直到只有兩個節(jié)點的堆,并對它們作交換,最后得到有n個節(jié)點的有序序列。從算法描述來看,堆排序需要兩個過程,一是建立堆,二是堆頂與堆的最后一個元素交換位置。所以堆排序有兩個函數(shù)組成。一是建堆的滲透函數(shù),二是反復(fù)調(diào)用滲透函數(shù)實現(xiàn)排序的函數(shù)。

(2)實例:

初始序列:46,79,56,38,40,84

建堆:


交換,從堆中踢出最大數(shù)


剩余結(jié)點再建堆,再交換踢出最大數(shù)


依次類推:最后堆中剩余的最后兩個結(jié)點交換,踢出一個,排序完成。

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)