圖譜推薦過程中需要對大量list集合中的資料進行排序,故此使用堆排序
堆排序的原理相對比較簡單,就是構造大根堆或者小根堆後將堆的跟交換到陣列的最前面或者最後面,然後對剩下的陣列元素繼續進行此過程,知道所有的元素排序完畢。
堆排序:
public class heapsort
} public void sort(object a,int k)
private void heapsort(object a, int k)
} public void buildmaxheapify(object a)
} public void max_heapify(object a,int index,int heapsize)
if(right) a[right]).compareto(a[largest])>0)
//得到最大值後可能需要交換,如果交換了,其子節點可能就不是最大堆了,需要重新調整
if(largest!=index)
} /*public static void main(string args) */
}
排序物件:
public class rank implements comparable
public void settwocolumn(int movie)
public double getsum_simlatrity()
public void setsum_simlatrity(double sumsimlatrity)
//重寫equals方法
public boolean equals(object obj)
public int compareto(rank o)
}
堆排序實現
今天抽空寫了個堆排序的演算法,廢話不多說,直接上源 include include includeusing namespace std define maxsize 6 void print int a,int size maxsize void percolate up int a,int si...
堆排序實現
1 堆排序演算法描述 1 定義 n個關鍵字序列kl,k2,kn稱為 heap 當且僅當該序列滿足如下性質 簡稱為堆性質 1 ki k 2i 且ki k 2i 1 1 i n 2 當然,這是小根堆,大根堆則換成 號。k i 相當於 二叉樹的非 葉子結點,k 2i 則是左子節點,k 2i 1 是右子節點...
實現堆排序
堆排序是在程式設計中經常用到的東西,在c 的stl底層裡面有make heap,push heap,pop heap 和 sort heap四個介面函式,我們用到的最多的是stl中的priority queue,其中的底層也是利用前面幾個函式實現的。下面我們就自己實現以下堆排序,主要包括調整堆結構,...