introsort

    0熱度

    1回答

    我目前正在學習排序算法,需要實現HeapSort和Introspective Sort。 我覺得我已經實現堆排序成功(代碼工作,試圖以百萬計隨機大小進行隨機排列的,總是工作),這裏是我的代碼: public static <T extends Comparable<? super T>> void hsort(T[] a) { int n = a.length; if(n <

    0熱度

    1回答

    我想了解introsort並找到稀缺資源。我的理解是它使用快速排序,但當遞歸變深時切換到堆排序。這是因爲快速排序通常比堆排序快,除非通話深度變得很深。 我的問題是,如何計算切換到heapsort之前的深度? Wikipedia有floor(log(length_of_data))x2但我看過其他的東西。什麼是推理?我正確的算法想要堅持快速排序,直到它需要切換到堆排序的內存原因?

    -3熱度

    1回答

    我使用quicksort,heapsort實現introsort .. 我的手編碼版本是基於D. Musser的建議與遞歸深度切換到heapsort作爲參數傳遞,中位數3樞軸選擇。切換到簡單插入排序的元素閾值爲16.