資料結構與演算法 歸併排序實現

2021-09-11 20:26:48 字數 1375 閱讀 8904

初始值陣列[24,13,26,1,2,27,38,15]

思路:

1.先分成兩個大小相同的子陣列[24,13,26,1][2,27,38,35]

2.在劃分 [24,13][26,1][2.27][38,35]

3.再劃分[24][13][36][1][2][27][38][35]

此時有8個陣列,每個陣列可以視為有序的陣列

**實現

public

class

mergetest

;print

(data)

;//data是待排序的陣列,左下標,最右側下標

mergetsort

(data,

0,data.length-1)

; system.out.

println

("排序後的陣列");

print

(data);}

private

static

void

mergetsort

(int

data,

int left,

int right)

/** * data待排序的陣列(子串行)

* left左側陣列的下標

* center 右側陣列左側下標

* right 陣列的最大下標

**/private

static

void

merge

(int

data,

int ai,

int center,

int right)

while

(bi<= right)

temparr[ti++

]= data[bi++];

while

(ai <= center)

temparr[ti++

]= data[ai++];

//不返回資料型別,將臨時陣列拷貝到原陣列中

while

(tmp<=right)

data[tmp]

= temparr[tmp++];

}private

static

void

print

(int

data)

system.out.

println()

;}}輸出結果為: 413

261227

3815

排序後的陣列12

4131526

2738

資料結構與演算法 歸併排序

include include include string include include include include algorithm using namespace std void merge vector input,int left,int mid,int right,vector...

資料結構與演算法(歸併排序)

歸併排序是採用分治法的乙個典型的應用,歸併排序的思想就是先遞迴分解陣列,在合併陣列。將陣列分解最小之後,然後合併兩個有序陣列,基本思路是比較兩個陣列的前面的數,誰小就先取誰,取了後相應的指標就往後移一位,直至乙個陣列為空,最後把另乙個陣列的剩餘部分複製過來即可。def merge sort alis...

資料結構與演算法 歸併排序

你可以在 的 mer 標籤中看到歸併排序的動畫。歸併排序 時間複雜度 o nlogn 空間複雜度 o n 基本思想 分治思想。8 6 2 3 1 5 7 4 分 8 6 2 3 1 5 7 4 分 8 6 2 3 1 5 7 4 分 8 6 2 3 1 5 7 4 並 8 6 2 3 1 5 7 4...