資料結構小白之歸併排序

2021-09-29 09:41:38 字數 1382 閱讀 4955

分治就是"分而治之",就是把乙個複雜的問題進行不斷的拆分,拆成兩個或者若干個相同或者相似的子問題,然後再把子問題分成更小的子問題.. 最後分到子問題可以單獨求解

分:首先將乙個無序的陣列拆分成若干部分(在此處的思路就是拆分成單個數為止)

治:然後將分離的數進行合併(合併的過程中進行比較排序),最後得到兩個有序的序列

最後再通過一些思路將兩個有序序列進行合併,得到最終結果

4-1:如何進行資料的拆分(採用遞迴的方式)

4-2:如何進行資料的合併(在這裡手寫了最後一次的過程..)

看波**,邏輯其實挺簡單,但是需要注意標誌位的移動

/**

* arr表示待排序的陣列

* left表示左邊有序序列的初始索引

* mid表示中間索引

* right表示右邊索引

* temp表示臨時陣列,起到中轉的作用**

*/public static void merge(int arr, int left, int mid, int right, int temp) else

}//此時一邊已經走完 另一邊還在繼續行進

//2.

//把有剩餘資料的一邊的資料依次全部填充到temp去

while (i <= mid)

while (j <= right)

//3.

//將temp的陣列的元素拷貝到arr

t=0;

int templeft=left;

int tempright=right;

while(templeft<=tempright)

}

4-3:如何進行資料的拆分(遞迴)

//歸併排序(遞迴)

public static void mergesort(int arr, int left, int right, int temp)

}

4-4:呼叫主方法

public static void main(string args) ;

int temp = new int[arr.length];

mergesort(arr, 0, arr.length - 1, temp);

system.out.println("歸併排序後" + arrays.tostring(arr));

}

4-5:測試結果:

4-6:完整**:

資料結構之歸併排序

介紹 歸併排序是建立在歸併操作上的一種有效的排序演算法,效率為o nlogn 歸併排序的實現分為遞迴實現與非遞迴 迭代 實現。遞迴實現的歸併排序是演算法設計中分治策略的典型應用,我們將乙個大問題分割成小問題分別解決,然後用所有小問題的答案來解決整個大問題。非遞迴 迭代 實現的歸併排序首先進行是兩兩歸...

資料結構之歸併排序

編寫乙個歸併排序程式,並在main函式中驗證結果 歸併排序 merging sort 是利用 歸併 技術進行排序,所謂歸併 是指將若干個已排序好的子表合併成乙個有序表 最簡單的歸併是將兩個有序的子表合併成乙個有序表。假設r low 到r mid 和r mid 1 到r high 是儲存在同乙個陣列中...

資料結構之歸併排序

話說天下大勢,分久必合,合久必分.那就讓我一統江山,將其合併吧 哇咔咔咔,廢話不多說了,歸併排序的 來啦.歸併畢竟相較之前的排序都會更複雜些,所以加了備註.寫注釋也是能獲得碼市好好公民獎的吧 public class merge 以起始下標和最大下標為準求出中間數,採用遞迴方式將陣列不斷分成左右兩邊...