資料結構C 實現歸併排序

2021-10-07 00:16:39 字數 1035 閱讀 3679

###本來寫了一大堆,一貼上**都沒了,不想寫了,直接來**

#include

#include

#include

using

namespace std;

void

merge

(vector<

int>

&nums,

int start,

int mid,

int end, vector<

int>

&temp)

else

}while

(left1 <= right1)

while

(left2 <= right2)

//輔助空間元素放回去

for(

int i = start; i <= end;

++i)

}void

mergesort_open

(vector<

int>

&nums,

int start,

int end,vector<

int>

&temp)

void

mergesort

(vector<

int>

&nums)

intmain()

for(

auto i : arr)

cout << i <<

' '; cout << endl;

mergesort

(arr,

0, arr.

size()

-1, temp)

;//輸出

for(

auto i : arr)

cout << i <<

' ';

cout << endl;

system

("pause");

return0;

}

歸併排序,無論陣列的情況,最大和最小複雜度是一樣的nlog(n).

C 資料結構 歸併排序

1 基本思想 自上而下 將兩個的有序數列合併成乙個有序數列,我們稱之為 歸併 歸併排序 merge sort 就是利用歸併思想對數列進行排序。2 工作過程 自上而下 對照下圖 a 如圖所示的陣列進入mergesortup2down1函式,此時start 0,mid 3,end 7。由於使用了遞迴,因...

資料結構Python實現 歸併排序

當我們要排序這樣乙個陣列的時候,歸併排序法首先將這個陣列分成一半。然後想辦法把左邊的陣列給排序,右邊的陣列給排序,之後呢再將它們歸併起來。當然了當我們對左邊的陣列和右邊的素組進行排序的時候,再分別將左邊的陣列和右邊的陣列分成一半,然後對每乙個部分先排序,再歸併分到一定細度的時候,每乙個部分就只有乙個...

資料結構 遞迴實現歸併排序

1 通過遞迴實現歸併排序 2 具有思路 將要排序的陣列不斷劃分,直到只有乙個元素的時候停止 3 這是遞迴的基準條件,返回進行排序。4 歸併排序的時間複雜度 o nlogn 考慮的是複製資料到workarr和workarr到arr的次數5 6 7 public class mergewithrecur...