歸併演算法的實現

2021-07-01 19:52:13 字數 2436 閱讀 6808

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; // 第一次分割的陣列個數

for (int i = 0; i < mergecount - 1; i++)

}int temp = mergesort(arrays.copyofrange(intarr, 0, startpos),

arrays.copyofrange(intarr, startpos, endpos));

for (int j = 0; j < temp.length; j++)

} for (int i = 0; i < intarr.length; i++)

} public static int mergesort(int intarr1, int intarr2) else if (intarr1[index1] < intarr2[index2]) else

// 1.當陣列一遍歷完成,陣列二還沒有遍歷完成

if (iscopyarray(intarr1, index1, intarr2, index2))

// 2.當陣列二遍歷完成,陣列一還沒有遍歷完成

if (iscopyarray(intarr2, index2, intarr1, index1))

} return allarr;

} public static boolean iscopyarray(int arr1, int index1, int arr2,

int index2)

public static void copyarray(int fromarr, int fromindex, int toarr,

int allindex)

}}

總結:(1)根據原理實現了歸併排序了,對比一下標準的,顯得比較複雜。

(2)這裡有幾個地方思考的,就是會產生很多的臨時的陣列,應該如何處理比較好。

(3)歸併的策略是咋樣的,還有就是歸併有序陣列的次數。自己通過簡單的實驗得出歸併的次數的,

想出這樣子的歸併方法,是因為想確定一下歸併的次數,感覺這樣子很容確定歸併的次數了。

(4)經過自己的思考得出來的,實現了,但是比較起來標準的,差了很多,但也收穫很多。

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; // 第一次分割的陣列個數

for (int i = 0; i < mergecount - 1; i++)

}int temp = mergesort(arrays.copyofrange(intarr, 0, startpos),

arrays.copyofrange(intarr, startpos, endpos));

for (int j = 0; j < temp.length; j++)

} for (int i = 0; i < intarr.length; i++)

} public static int mergesort(int intarr1, int intarr2) else if (intarr1[index1] < intarr2[index2]) else

// 1.當陣列一遍歷完成,陣列二還沒有遍歷完成

if (iscopyarray(intarr1, index1, intarr2, index2))

// 2.當陣列二遍歷完成,陣列一還沒有遍歷完成

if (iscopyarray(intarr2, index2, intarr1, index1))

} return allarr;

} public static boolean iscopyarray(int arr1, int index1, int arr2,

int index2)

public static void copyarray(int fromarr, int fromindex, int toarr,

int allindex)

}}

歸併演算法的Java實現

歸併演算法是分治思想的經典應用,其基本思想就是將兩個有序的表合併成為乙個有序表。實現將a b兩個陣列合併到c陣列 public void merge int a,int b,int c private static void sort int nums,int from,int to,int tem...

python實現歸併演算法

歸併排序是採用分治法的乙個非常典型的應用,另乙個可以採用分治法的是快速排序,歸併演算法比快速排序速度稍低。歸併排序的思想就是先遞迴分解陣列,再合併陣列。將陣列分解最小之後,然後合併兩個有序陣列,基本思路是比較兩個陣列的最前面的數,誰小就先取誰,取了後相應的指標就往後移一位。然後再比較,直至乙個陣列為...

歸併排序演算法的實現

近期由於找工作,對歸併排序演算法也進行了一些研究,雖然網上有很多類似的演算法 實現,但是總是不太完整,閒來無聊對其他人的演算法 進行了一些整理,整理出了乙份完整的實現 感謝其他部落格的原創,也希望愛好程式設計的人能借鑑。下面是具體的 實現 include include 複製陣列 source 源陣...