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