初始值陣列[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...