public
class
mergesort
public
static
comparable
>
void
sort
(e arr)
public
static
comparable
>
void
sort
(e arr,
int l,
int r,
int depth)
//獲取中間值
//有時候可能會出現 整形的溢位 所以我們改為減法
int mid = l +
(r - l)/2
;//分開進行排序
sort
(arr,l,mid,depth +1)
;//深度 +1
sort
(arr,mid+
1,r,depth +1)
;//列印這次merge要處理的陣列區間範圍
system.out.
print
(depthstring)
; system.out.
println
(string.
format
("merge arr[%d,%d] and arr[%d,%d]"
,l,mid,mid+
1,r));
//對排好序的陣列進行歸併
merge
(arr,l,mid,r)
;//列印merge 後的陣列
system.out.
print
(depthstring)
; system.out.
print
(string.
format
("after arr[%d,%d]"
,l,r));
for(e e:arr)
system.out.
println()
;}//實現歸併
public
static
comparable
>
void
merge
(e arr,
int l,
int mid,
int r)
else
if(j > r)
else
if(temp[i-l]
.compareto
(temp[j-l]
)<=0)
else}}
private
static string generatedepthstring
(int depth)
return res.
tostring()
;}public
static
void
main
(string[
] args)
;sort
(arr);}
}
mergesort arr[0,
7]---mergesort arr[0,
3]----
--mergesort arr[0,
1]----
----
-mergesort arr[0,
0]----
----
-mergesort arr[1,
1]----
--merge arr[0,
0] and arr[1,
1]----
--after arr[0,
1]17
4283
65----
--mergesort arr[2,
3]----
----
-mergesort arr[2,
2]----
----
-mergesort arr[3,
3]----
--merge arr[2,
2] and arr[3,
3]----
--after arr[2,
3]17
2483
65---merge arr[0,
1] and arr[2,
3]---after arr[0,
3]12
4783
65---mergesort arr[4,
7]----
--mergesort arr[4,
5]----
----
-mergesort arr[4,
4]----
----
-mergesort arr[5,
5]----
--merge arr[4,
4] and arr[5,
5]----
--after arr[4,
5]12
4738
65----
--mergesort arr[6,
7]----
----
-mergesort arr[6,
6]----
----
-mergesort arr[7,
7]----
--merge arr[6,
6] and arr[7,
7]----
--after arr[6,
7]12
4738
56---merge arr[4,
5] and arr[6,
7]---after arr[4,
7]12
4735
68 merge arr[0,
3] and arr[4,
7]after arr[0,
7]12
3456
78
Javascript合併演算法的實現(遞迴 迭代)
使用分治法將需要排序的內容一分為二,二分為四,四分為八 將內容分解到通過最後單獨比較大小的粒度,進行排序,然後將內容八並為四,四並為二,二並為一。1 遞迴實現 function merge left,right return result.concat left concat right funct...
歸併演算法的實現
public class test int count intarr.length for int i 0 i intarr.length 1 i 2 2個有序陣列,共合併1次 3個有序陣列,共合併2次 4個有序陣列,共合併3次 int mergecount count 2 count 2 第一次分...
歸併演算法的改進
遞迴對陣列b排序,將排序後的結果放入a中,下次遞迴排序時對陣列a排序,將結果放入b中,以此方式可以完成對陣列的排序.且沒有出現在子陣列合併後陣列之間的複製.include include include include include include using namespace std defi...