七大排序演算法之歸併排序

2021-08-19 14:27:20 字數 810 閱讀 5047

雖然歸併排序在七大排序演算法中,不是那麼的出眾,但是畢竟人家是乙個穩定的演算法,所以,技多不壓身,何樂為不為呢

還是乙個分治的思想,將乙個陣列分為兩部分,然後對左邊歸併排序,對右邊歸併排序,再將兩個有序子陣列合併即可,那麼怎麼合併兩個陣列呢,簡單一點的辦法就是建立乙個臨時陣列,然後不斷遍歷二個陣列的元素,將較小者放入臨時陣列,知道其中乙個陣列元素遍歷完畢,在將另乙個陣列中剩餘的元素附加到臨時陣列末尾即可。

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...