日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

归并排序java版

發布時間:2023/12/9 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 归并排序java版 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

歸并排序java版

  • 歸并排序java版

歸并排序java版

好長時間沒寫過歸并排序,在學習并發中又遇到了一個歸并排序的demo,于是就想試試自己還能不能寫出來,結果沒寫出來…,看了一些文章后,整理了一下思路,把歸并排序寫了出來,在這里自己分析一下,加強記憶。

歸并排序的思想是分而治之,總之就是拆分,拆分,再拆分,將粒度降到最低,然后再進行合并,合并,再合并。

轉載部分圖片從外部:

拆分圖解:

通過看臨時數組,將源數據左右部分放到臨時數組;
使用i,j兩個索引控制索引位;
當i<j位的數據,則把i位放入temp,否則將j位數據放入temp,并將對應索引+1;
最后將當一側索引達到盡頭,另一側數據由于已經有了順序,則直接全部放入temp中即可;

直接貼代碼:

public class MergeSortDemo {public static void merge(int[] arr, int left, int right, int[] temp){// int mid = (left+right)/2;int mid = left+(right-left)/2;int i=left;int j = mid+1;int index = left;//當l小于等于中間點,j小于等于右索引//只有滿足以下兩個條件才能進行循環//下面的操作是以左右兩邊的同時向右推進,//左側的數值小則將左側的索引位數值放到temp[index]中,同時左索引+1,index+1;//右側的數值小則將右側的索引位數值放到temp[index]中,同時右索引+1,index+1;while (i<=mid && j <=right ){if(arr[i]<arr[j]){temp[index++] = arr[i++];}else {temp[index++] = arr[j++];}}//當條件不滿足時,必須是i>mid或j>right才會不滿足;//此時由于排序,左側數據的右端大于左端(拆分后的數據經過排序各部分已經具有順序);////一旦i>mid,則代表左側全部放到temp中,也代表左側數據較小,全部小于右側剩余的數據,右側剩余的數據已經具有順序,則可以直接添加到temp后尾;//將剩余的數據放到temp中,//下面兩個while只能滿足其一;while (i<=mid){temp[index++] = arr[i++];}while (j<=right){temp[index++] = arr[j++];}//再將數據回填到arr中;i=left;j=left;//只把左右索引這部分數據進行回填,while (i<=right){arr[i++]=temp[j++];}}/**** @param arr 源數組* @param left 左索引* @param right 右索引* @param temp 臨時數組*/public static void sort(int arr[],int left,int right,int temp[]){//如果左索引小于右索引,則排序if(left<right){//左排序,每次折半排序,從左索引,到中間點;sort(arr,left,left+(right-left)/2,temp);//右排序,從中間點+1,到右索引,由于上邊排序包含中間點,所以下面的必須中間點+1;sort(arr,left+(right-left)/2+1,right,temp);//合并merge(arr,left,right,temp);}}public static void main(String[] args) {int arr[]=new int[]{1,9,7,10,8,14,3,5,2,6,78,16,78,88};int arr2[]=new int[arr.length];sort(arr,0,arr.length-1,arr2);for (int i : arr) {System.out.println(i);}} }

文中圖片來源于外鏈

外鏈參考文章地址:
點擊跳轉

總結

以上是生活随笔為你收集整理的归并排序java版的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。