mergesort

    0熱度

    1回答

    我想知道,K路合併排序的最大K值是多少還是有最大值。 該算法的時間複雜度爲O(nlogK)。我一直在尋找它幾個小時,沒有運氣。有人可以將我鏈接到一些文章中,或者告訴我是否有一些限制,爲什麼會這樣? 另外我想知道是否有一些推薦使用的K值,這是最有效的。

    1熱度

    3回答

    從http://www.geeksforgeeks.org/merge-sort-for-linked-list/ 鏈表的慢隨機存取性能使得其他一些 算法(如快速排序)表現不佳,和其他人(如 堆排序)完全不可能的。 不過,我真的不明白爲什麼快速排序將執行比歸併排序而排序的鏈接列表變得更糟。 在快速排序: 選擇一個支點,需要隨機訪問,並需要通過鏈表(O(每遞歸N))進行迭代。 分區可以用左到右的掃描

    1熱度

    1回答

    我想使用向量而不是數組使用合併排序方法來排序文本文件。代碼的構建,但是當我運行它時,我的一個向量出現了一個outbounds錯誤。 具體來說: for (int k = start; k < end; k++) { if (L.at(x) <= R.at(y)) { v.at(k) = L.at(x); // out of bounds x++;

    0熱度

    1回答

    由於某種原因,此合併排序將無法正常運行。這幾乎是正確的,但不完全。合併函數可以在我測試過的所有已排序數組上正常工作,並且mergeSort函數似乎沒有任何明顯的問題。我錯過了什麼? 示例輸入:7,1,5,6,9,3,8,0,2,1。 排序後,0 1 1 1 1 3 1 5 6 1。 每個後合併: 1 1 5 6 9 3 8 0 2 1 1 1 5 6 9 3 8 0 2 1 1 1 5 6 9

    4熱度

    2回答

    我想讓我的頭圍繞歸併排序算法的一部分的遞歸排序函數。這是我的代碼,我幾乎可以肯定是正確的(在線課程之後)。 private static void sort(Comparable[] a, Comparable[] aux, int low, int high) { if (high <= low) return; int mid = low + (high - low)/

    0熱度

    2回答

    我試圖基於自底向上/迭代mergesort算法實現我自己的Mergesort。該算法將數據拆分爲2個元素並進行排序。然後通過4elements和排序等,直到所有的數據排序。所以,我的計劃是通過2個元素分配每個線程。所以我這樣做: __global__ void mergeBU(int *d_a, int *d_aux, int sz, int N) { int idk = blockI

    0熱度

    1回答

    問題是 - 合併兩個排序後的鏈接列表。 有關詳細信息,請訪問https://www.hackerrank.com/challenges/merge-two-sorted-linked-lists 當我在網站上提交時,顯示「由於超時而終止」。請告訴我代碼出現了什麼問題,以及如何解決該問題。 Node MergeLists(Node headA, Node headB) { // This is a

    0熱度

    1回答

    我一直在嘗試實現合併排序,但我一直運行到「Maximum Recursion Depth」錯誤。我目前的理論是,「如果listlen < = 1:」不抓住它,但我想不出爲什麼 def mergesort(listin): listlen = len(listin) if listlen <= 1: return listin left = []

    -1熱度

    3回答

    我在查看在線wiki時創建了二進制搜索。我有一類Athletes,每個類都有一個名稱和編號。我輸入一個文件文本或csv,並不重要 - 每個運動員的姓名和號碼。我的程序首先對它們進行排序,然後我嘗試添加基於用戶輸入搜索數字的功能,並顯示誰穿着該編號的球衣。所以我最初的帖子是試圖對具有相同編號的人進行二分查找。如果我的名單上有邁克爾喬丹和勒布朗詹姆斯,他們都會穿23號 - 所以當我的搜索過程中只輸出1

    0熱度

    1回答

    我試圖實現MergeSort,但它不顯示數字的正確順序。我想看看我的代碼中發生了什麼,以及如何正確地修復它。 public class MergeSort { private static void sort(int[]a,int start,int end){ if(start>=end){return;} int halfway=(start+end)/2