雖然歸併排序在七大排序演算法中,不是那麼的出眾,但是畢竟人家是乙個穩定的演算法,所以,技多不壓身,何樂為不為呢
還是乙個分治的思想,將乙個陣列分為兩部分,然後對左邊歸併排序,對右邊歸併排序,再將兩個有序子陣列合併即可,那麼怎麼合併兩個陣列呢,簡單一點的辦法就是建立乙個臨時陣列,然後不斷遍歷二個陣列的元素,將較小者放入臨時陣列,知道其中乙個陣列元素遍歷完畢,在將另乙個陣列中剩餘的元素附加到臨時陣列末尾即可。
public class mergesort ;
system.out.println("排序前陣列為:");
for (int num : arr)
sort(arr);
system.out.println();
system.out.println("排序後的陣列為:");
for (int num : arr)
} public static void sort(int arr)
private static void sort(int arr, int left, int right, int temp)
} private static void merge(int arr, int left, int mid, int right, int temp) else
} while (i <= mid)
while (j <= right)
t = 0;
// 將temp中的元素全部拷貝到原陣列中
while (left <= right)
}}
入口在此:點我學習希爾排序 七大排序問題之歸併排序 PHP版
arr array 1 5 9 6 8 2 3 4 7 function merge array,p,q,r for j 0 j n2 j l n1 999 r n2 999 i 0 j 0 for k p k r k else array k temp dispalay array functio...
七大排序演算法之改進演算法系列(六) 歸併排序
歸併排序 merging sort 歸併排序是利用歸併的思想實現的排序方法,該演算法採用經典的分治 divide and conquer 策略 分治法將問題分 divide 成一些小的問題然後遞迴求解,而治 conquer 的階段則將分的階段得到的各答案 修補 在一起,即分而治之 實際上就是將資料序...
七大排序演算法
氣泡排序 void bubble int a,int n 選擇排序 void select sort int a,int n n為陣列a的元素個數 將第i 小的數,放在第i 個位置 如果剛好,就不用交換 if i min index 插入排序 typedef int elementtype void...