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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java的归并排序算法_归并排序算法Java实现

發布時間:2023/12/19 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java的归并排序算法_归并排序算法Java实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 算法描述

歸并排序采用了分治策略(divide-and-conquer),就是將原問題分解為一些規模較小的相似子問題,然后遞歸解決這些子問題,最后合并其結果作為原問題的解。

歸并排序將待排序數組A[1..n]分成兩個各含n/2個元素的子序列,然后對這個兩個子序列進行遞歸排序,最后將這兩個已排序的子序列進行合并,即得到最終排好序的序列。具體排序過程如下圖所示:

歸并排序中一個很重要的部分是兩個已排序序列合并的過程,這里需要另外開辟一塊新的空間來作為存儲這兩個已排序序列的臨時容器。假設對A[p..r]序列進行合并,已知A[p..q]及A[q+1..r]為已排序的序列,合并的具體步驟為:

Step 1:新建兩個數組L、R分別存儲待合并序列A[p..q]和A[q+1..r],將待排序序列中的對應元素copy到L和R中,L和R最后設置一個極大值作為“哨兵”;

Step 2:令指針i指向L的起始元素,j指向R的起始元素,k指向A待合并部分的起始元素A[p];

Step 3:若L[i]≤R[j],令A[k]=L[i],i=i+1,k=k+1;

否則,令A[k]=R[j],j=j+1,k=k+1;

(這一步即依次比較i、j所指向的元素,將較小值依次放入到A中相應位置。)

Step 4 :重復Step 3,r-p+1次后停止,即依次確定A[p..q]每個位置上的元素。

經過合并操作后,A[p..q]為一個有序序列。若待合并序列為(38, 49, 65, 97, 13, 27, 49, 76),p=1,q=4,, r=8,即A[1..4]和A[5..8]分別為有序序列,則合并操作的具體過程如下圖所示:

package com.neuedu.algorithm;

import java.util.Arrays;

public class MergeSort {

//歸并排序

/*歸并排序采用遞歸實現

* 分階段可以理解為就是遞歸拆分子序列的過程、

* 治階段,我們需要將兩個已經有序的子序列合并成一個有序序列,比如上圖中的最后一次合并,要將[4,5,7,8]和[1,2,3,6]兩個已經有序的子序列,合并為最終序列[1,2,3,4,5,6,7,8],

* */

public static void main(String []args){

int []arr = {9,8,7,6,5,4,3,2,1};

sort(arr);

System.out.println(Arrays.toString(arr));

}

public static void sort(int []arr){

int []temp = new int[arr.length];//在排序前,先建好一個長度等于原數組長度的臨時數組,避免遞歸中頻繁開辟空間

sort(arr,0,arr.length-1,temp);

}

private static void sort(int[] arr,int left,int right,int []temp){

if(left

int mid = (left+right)/2;

sort(arr,left,mid,temp);//左邊歸并排序,使得左子序列有序

sort(arr,mid+1,right,temp);//右邊歸并排序,使得右子序列有序

merge(arr,left,mid,right,temp);//將兩個有序子數組合并操作

}

}

private static void merge(int[] arr,int left,int mid,int right,int[] temp){

int i = left;//左序列指針

int j = mid+1;//右序列指針

int t = 0;//臨時數組指針

while (i<=mid && j<=right){

if(arr[i]<=arr[j]){

temp[t++] = arr[i++];

}else {

temp[t++] = arr[j++];

}

}

while(i<=mid){//將左邊剩余元素填充進temp中

temp[t++] = arr[i++];

}

while(j<=right){//將右序列剩余元素填充進temp中

temp[t++] = arr[j++];

}

t = 0;

//將temp中的元素全部拷貝到原數組中

while(left <= right){

arr[left++] = temp[t++];

}

}

}

總結

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

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

主站蜘蛛池模板: 米奇影视第四色 | 伊人网成人 | 玩弄丰满少妇xxxxx性多毛 | 国产日韩欧美自拍 | 中文字幕国产亚洲 | 一级做a爰片 | 91操操| 韩国无码一区二区三区精品 | 久久久精品小视频 | 欧美日韩视频 | 国产精品伦理 | 高潮毛片7777777毛片 | av九九九 | 国产校园春色 | 91在线观看视频 | 免费国偷自产拍精品视频 | 日日操天天操 | 天天视频黄 | 日批视频免费观看 | 网站黄色在线观看 | 超碰97自拍 | 91视频一区二区 | 色人阁五月天 | 一级片免费的 | 婷婷激情社区 | 欧美日韩毛片 | 操日韩 | 欧美乱妇视频 | 麻豆国产精品 | 亚洲无码一区二区三区 | 人妻无码一区二区三区久久99 | 一区视频网站 | 色哟哟在线播放 | 蜜桃av噜噜一区二区三区网址 | 91在线小视频 | 亚洲最大的黄色网 | 国产伦理久久精品久久久久 | 成人午夜视频免费看 | 成人午夜免费网站 | 国产精品久久久久久在线观看 | 老子影院午夜精品无码 | 亚洲不卡免费视频 | 午夜精品久久久久久久第一页按摩 | 中文字幕理伦片免费看 | 亚洲17p | 日韩av毛片 | 日韩视频免费在线观看 | 91小仙女jk白丝袜呻吟 | jizzzxxxx| 欧美动态视频 | 男女做网站 | 天堂中文在线最新 | 少妇免费直播 | 国产小视频在线免费观看 | 欧美精品免费一区二区 | 97在线视频免费观看 | 国产黄在线 | 精品在线免费视频 | 韩国国产在线 | 91精品国产综合久久久久久 | 999久久久| 综合激情伊人 | 性欧美大战久久久久久久 | 丰满熟女人妻一区二区三 | www.日本黄 | а中文在线天堂 | 国产精品第 | 精品无码av一区二区三区四区 | 日本福利片在线观看 | 亚洲欧洲久久 | 成人动漫免费观看 | 久久作爱 | 极品新婚夜少妇真紧 | 国产乱淫精品一区二区三区毛片 | 九九久久久 | 国产97自拍 | 夜久久久| 少妇伦子伦精品无吗 | 69av视频在线观看 | 99青草| 天天干夜夜玩 | 另类小说色综合 | 日本福利在线观看 | 日韩一区二区三区四区在线 | 亚洲国产三级 | 久久国内免费视频 | 亚洲色图网站 | 秋霞电影一区二区 | 久久久久久福利 | 人人妻人人澡人人爽人人dvd | 日韩成人综合 | 福利所第一导航 | 免费在线观看黄色av | 波多野结衣欲乱上班族 | 高清日韩欧美 | www.日韩精品 | 精品无码久久久久 | 狠狠操天天干 | 高潮毛片无遮挡高清免费 |