之前覺得這個很難,後來看了一些部落格,理解了之後總算是懂了。算是之前的補充。(並且今天筆試有排序演算法,正好做個記錄,加深映象)。
歸併排序的核心是分而治之,先分開,再兩兩合併,合併的時候調整順序。
例如 待排序序列
4 8 5 3 9 6 2 4
第一次分 4 8 5 3 | 9 6 2 4
第二次分 4 8 | 5 3 | 9 6 | 2 4
第三次分 4 |8 | 5 | 3 | 9| 6 | 2 | 4 (此時序列有序)
合併 4 8 | 3 5 | 6 9| 2 4
3 4 5 8 | 2 4 6 9
2 3 4 5 6 8 9
在48與35合併的時候 4 與3 比較,將3放在前面,4和5比較,4放在前面,8和5比較,5,最後是8 ,後面也是一樣的,最終有序。
核心**如下
//合併數
public static void merge(int list,int low ,int high){
int temp = new int[high-low+1];
int mid = (low+high)/2;
int i=low,j=mid+1,k=0;
//將數按順序放入temp
while (i<=mid&&j<=high){
if (list[i]**已經上傳至
順便作為之前排序演算法的補充。
參考部落格
歸併排序法
合併排序 merge sort 是又一類不同的排序方法,合併的含義就是將兩個或兩個以上的有序資料序列合併成乙個新的有序資料序列,因此它又叫歸併演算法。它的基本思想就是假設陣列a有n個元素,那麼可以看成陣列a是又n個有序的子串行組成,每個子串行的長度為1,然後再兩兩合併,得到了乙個 n 2 個長度為2...
歸併排序法
void guibing int r,int temp,int s,int m,int t 陣列r的兩個連續的有序列,從第s到第m個,從第m 1到第t個,合併產生乙個有序列 從第s到第t else temp k r j while i m while j t 將剩餘的插入,只會進行兩個while中的...
歸併排序法
1 doctype html 2 html 3 head 4 meta charset utf 8 5 meta name viewport content width device width 6 title 歸併排序法 title 7head 8 body 9歸併排序是一種分治演算法,其思想是將...