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

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

