日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

堆排序代碼解析 堆排序的算法及代碼實(shí)現(xiàn)

目前這個(gè)系列的文章都挑著非常經(jīng)典的,讓人眼前一亮的算法,今天的堆排序算法就是其中一個(gè) 。首先理解什么是堆,這里面堆(Heap)并不是程序中內(nèi)存區(qū)域,而是一種完全二叉樹表示的數(shù)據(jù)結(jié)構(gòu) 。堆具有以下特點(diǎn)

  • 是一個(gè)完全二叉樹
  • 堆的每個(gè)節(jié)點(diǎn)的值必須大于等于左右樹節(jié)點(diǎn)(大頂堆),或小于等于左右樹節(jié)點(diǎn)(小頂堆) 。
簡(jiǎn)單說明下,完全二叉樹是除了最后一層葉子節(jié)點(diǎn)外,其他的節(jié)點(diǎn)都有兩個(gè)子樹,而葉子節(jié)點(diǎn)可以沒有子樹,或者只有左子樹 。如下圖就是個(gè)大頂堆:

堆排序代碼解析 堆排序的算法及代碼實(shí)現(xiàn)



堆排序代碼解析 堆排序的算法及代碼實(shí)現(xiàn)


小頂堆

堆排序代碼解析 堆排序的算法及代碼實(shí)現(xiàn)


堆存儲(chǔ)
堆因?yàn)槭峭耆鏄?,非常適合用數(shù)組存儲(chǔ),上圖為大頂堆的存儲(chǔ)情況,其中a[0]不用,a[1]為大頂堆的頂點(diǎn),也就是最大的數(shù)據(jù),a[1

    推薦閱讀