Java算法中的歸并排序算法代碼實現(xiàn)
Java歸并排序算法
1、排序原理
歸并排序使用的是分治思想(Divide and Conquer),分治,顧名思義,就是分而治之,是將一個大問題分解成小的子問題來解決。小的子問題解決了,大問題也就解決了。
歸并排序的核心思想是:如果要排序一個數(shù)組,先把數(shù)組從中間分成前后兩部分,然后再分解,直到每個子序?qū)χ兄皇R粋€元素,最后通過遞歸,層層合并。

2、代碼實現(xiàn)
public static int[] mergeSort(int[] array) { if (array.length <=1) return array; //取數(shù)組的中間位置 int mid = array.length>>1; //數(shù)組拆分 int[] left = Arrays.copyOfRange(array, 0, mid); int[] right = Arrays.copyOfRange(array, mid, array.length); //遞歸調(diào)用 int[] result=merge(mergeSort(left), mergeSort(right)); return result; } /** * 合并, * @param left 拆分后左側(cè)數(shù)組 * @param right 拆分后右側(cè)數(shù)組 * @return */ public static int[] merge(int[] left, int[] right) { int[] result = new int[left.length + right.length]; int i=0,j=0; // i用來標(biāo)識左側(cè)數(shù)組 , j用來標(biāo)識右側(cè)數(shù)組 for (int index = 0; index < result.length; index++) { //如果i 大于左側(cè)數(shù)組,說明左側(cè)已經(jīng)沒有多余的數(shù)組,將剩余的數(shù)據(jù)拷貝到臨時數(shù)組 if (i >= left.length) { result[index] = right[j++]; } //如果j大于右側(cè)數(shù)組,說明右側(cè)已經(jīng)沒有多余的數(shù)組,將剩余的數(shù)據(jù)拷貝到臨時數(shù)組 else if (j >= right.length) { result[index] = left[i++]; } //比較兩個數(shù)組,如果左側(cè)大于右側(cè)數(shù)組,就將右側(cè)數(shù)組放入到臨時數(shù)組 else if (left[i] > right[j]) { result[index] = right[j++]; } else{//就將左側(cè)數(shù)組放入到臨時數(shù)組 result[index] = left[i++]; } } return result; }到此這篇關(guān)于Java算法中的歸并排序算法代碼實現(xiàn)的文章就介紹到這了,更多相關(guān)Java歸并排序算法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot中websocket簡單實現(xiàn)
本文主要介紹了springboot中websocket簡單實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
SpringCloud微服務(wù) Sentinel 實戰(zhàn)指南
文章主要介紹了Sentletinel在微服務(wù)中的應(yīng)用及工作原理,涵蓋了流控規(guī)則、熔斷降級、授權(quán)控制等內(nèi)容,強(qiáng)調(diào)了通過合理的限流和降級策略來保護(hù)系統(tǒng)穩(wěn)定運行,感興趣的朋友跟隨小編一起看看吧2026-05-05
關(guān)于Spring MVC框架中攔截器Interceptor的使用解讀
這篇文章主要介紹了關(guān)于Spring MVC框架中攔截器Interceptor的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
Java并發(fā)系列之JUC中的Lock鎖與synchronized同步代碼塊問題
這篇文章主要介紹了Java并發(fā)系列之JUC中的Lock鎖與synchronized同步代碼塊,簡單介紹了lock鎖及鎖的底層知識,結(jié)合案例給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04

