python堆排序求topn 堆排序獲取TopN

2021-10-12 10:58:01 字數 891 閱讀 7064

packagecom.zjl.tool.sort;/*** 求前面的最大k個 解決方案:小根堆 (資料量比較大(特別是大到記憶體不可以容納)時,偏向於採用堆)

*@author張恩備

* @date 2016-11-25 下午12:15:36*/

public classtopnbyheap //如果只有左孩子,沒有右孩子,max值為left

if(left <= end&&right >end) //如果沒有孩子,則表明到了完全二叉樹的葉子節點

if(left >end) //如果當前節點值小於兩孩子中的值較大者,那麼將當前節點值與max交換

if(arr[start] >arr[min])//當前節點向孩子節點迭代

start =min;

}/*** 建立k個節點的小根堆

*@parama

*@paramk

*@return

static int createheap(int a, intk) //由最後乙個非葉子節點,向根節點迭代,建立最大堆,陣列中的最大值將被移動到根節點

for(int start = k-1/2;start >= 0;start--) returnresult;

}static void insert(int a, int value, intk) static int gettopkbyheap(int input, intk) //將小根堆降序排列

while(k-1 > 0)returnheap;

}public static voidmain(string args) ;//獲取top3

int result = gettopkbyheap(a, 3);for (inttemp : result) {

system.out.print(temp+ " ");

堆排序獲取TopN

package com.zjl.tool.sort 求前面的最大k個 解決方案 小根堆 資料量比較大 特別是大到記憶體不可以容納 時,偏向於採用堆 author 張恩備 date 2016 11 25 下午12 15 36 public class topnbyheap 如果只有左孩子,沒有右孩子,...

python3堆排序 python 堆排序

堆排序 堆排序 heapsort 是指利用堆這種資料結構所設計的一種排序演算法。堆積是乙個近似完全二叉樹的結構,並同時滿足堆積的性質 即子結點的鍵值或索引總是小於 或者大於 它的父節點 但是不保證所有左子樹比右子樹小反之亦然 堆排序可以說是一種利用堆的概念來排序的選擇排序。分為兩種方法 大頂堆 每個...

Python 堆與堆排序

堆排序與快速排序,歸併排序一樣都是時間複雜度為o n logn 的幾種常見排序方法。學習堆排序前,先講解下什麼是資料結構中的二叉堆。二叉堆是完全二叉樹或者是近似完全二叉樹。二叉堆滿足二個特性 1 父結點的鍵值總是大於或等於 小於或等於 任何乙個子節點的鍵值。2 每個結點的左子樹和右子樹都是乙個二叉堆...