mergesort

    0熱度

    1回答

    我試圖用合併排序來解決這個問題,但是我的解決方案出了問題。我在合併數組時檢查了反轉次數。 有人可以幫我找到問題嗎? void merge(int arr[], int l, int m, int r) { int n1=m-l+1; int n2=r-m; int left[(n1+1)]; int right[(n2+1)]; for(int

    -2熱度

    1回答

    編輯:這絕不是我以前的問題的重複。我的代碼已經相應地改變了我從前一個線程收到的答案,而且我仍然收到這些錯誤,這些錯誤與我上次提到的不一樣。 我在寫代碼來排序用戶使用合併排序輸入的區間。它從一個用戶輸入,它存儲在一個結構interval中,用來按升序排序。它使用正值和負值來檢查間隔側是打開還是關閉,但與正在執行的代碼無關。下面是我的代碼和我得到的輸出類型的示例。提前感謝大家的幫助。 #include

    1熱度

    1回答

    來自維基百科,https://en.wikipedia.org/wiki/Merge_algorithm#Application 在圖中,我們假設我們考慮中間一行數字(如果有人可以在這裏發佈圖片會有所幫助)。如果我將其修改爲: 合併38和27,然後按升序對數字進行排序。 (27,38) 將上面的結果與43合併,然後按升序對數字進行排序。 (27,38,43) 將上面的結果與3合併,然後按升序對數字

    1熱度

    1回答

    如果我有ķ排序的單鏈表,並通過每個列表的最大元素(在列表的最後),會有什麼大O(運行時間/時間複雜度)是它們排序(歸併) ?假設列表1〜k具有不同的大小:n_1〜n_k。我在想O(k * log(MAX(n_1〜n_k))),但不確定我是如何或爲什麼來到這個思路。

    6熱度

    1回答

    日安SO社區, 我目前進行的實驗相結合歸併和插入排序一個CS的學生。據瞭解,對於某個閾值,S,InsertionSort的執行時間比MergeSort快。因此,通過合併兩種排序算法,總運行時間將得到優化。 但是,在運行實驗多次後,使用1000的樣本大小和不同大小的S,實驗結果並沒有給出明確的答案。下面是獲得更好的效果的照片(注意時間一半的結果不明確): 現在,3500樣本大小嚐試相同的算法代碼:

    0熱度

    2回答

    我意識到我沒有把我的臨時點返回到任何東西,但我能做些什麼來解決這個問題? 現在它排序正確,但是當它排序下一層的一半時,它們仍然未排序。 UNSORTED POINTS: (-2,-42) (-15,2) (32,8) (-26,21) (39,-42) (-40, -18) (-30,7) (-12,-28) (19,-16) (-16,-38) 有序點: (-2,-42 ) (-15,2) (3

    1熱度

    1回答

    以下代碼使用mergeSort算法對最多包含1500000個數字的數組進行排序。然而,我不斷收到錯誤的線long temp [] = new long[end - start + 1]; 我不斷收到的錯誤消息是:'initializing': cannot convert from 'long *' to 'long []'和initialization with '{...}' expected

    0熱度

    1回答

    我想遞歸實現合併排序算法,只通過向函數傳遞矢量值(無左或右索引)。以下代碼中的while循環在將要排序的列表作爲指針void merge_sort_array(int* v, int l, int r)或引用void merge_sort_ref(vector<int>& v, int l, int r)進行傳遞時起作用,但我無法理解爲什麼下面的代碼不能正確地對我的列表進行排序。我有一種感覺,這與

    5熱度

    1回答

    我試圖解決這個問題:「安排在一個給定的鏈表的元素,使得所有的偶數號碼奇數後放置元素各自的順序應保持相同的」 這是我使用的代碼: class Node<T> { T data; Node<T> next; Node(T data) { this.data = data; } } 這是主要的邏輯: static Node<Integer> so

    2熱度

    1回答

    在this SO answer中,有一個計算長度爲32(最差情況)的數組的併發遞歸調用數的示例:1 + 2 + 4 + 8 + 16 + 32 = 63。 想象爲什麼會這樣 - 在樹的每一層都有2個節點的功率,我們總是進入下一層直到最後一層。 我想知道如何計算這個數字(遞歸調用的最大數量)爲任意長度的數組n?實際上,這個數字似乎是2*n-1,但我不明白爲什麼。有人可以解釋它背後的邏輯嗎?