最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)歸并排序算法

 更新時(shí)間:2016年01月20日 10:50:47   投稿:hebedich  
在學(xué)習(xí)算法的過程中,我們難免會(huì)接觸很多和排序相關(guān)的算法??偠灾瑢?duì)于任何編程人員來說,基本的排序算法是必須要掌握的。那么現(xiàn)在我們將要進(jìn)行基本的歸并排序算法的講解

歸并排序就是將未排序的數(shù)組進(jìn)行對(duì)半劃分成兩個(gè)數(shù)組,劃分后的數(shù)組只有原來數(shù)組的一半數(shù)量的元素。然后在對(duì)劃分的兩個(gè)數(shù)組再繼續(xù)劃分,循環(huán)此操作,直到劃分的數(shù)組中只有一個(gè)元素時(shí)停止劃分,然后對(duì)于劃分完成的數(shù)組進(jìn)行歸并排序操作。將兩個(gè)已經(jīng)劃分完成的數(shù)組合并成一個(gè)有序的數(shù)組,直到最后合并成一個(gè)包含所有元素的數(shù)組,合并排序操作完成。下面以圖形來演示下歸并排序的過程。

假設(shè)有一個(gè)未排序數(shù)組:{3,2,4,1},下面為數(shù)組的劃分過程,先將數(shù)組對(duì)半劃分為{3,2}和{4,1}兩個(gè)數(shù)組。然后在對(duì)這兩個(gè)數(shù)組進(jìn)行劃分最后得到{3},{2},{4},{1}四個(gè)數(shù)組,劃分完成。

接下來對(duì)數(shù)組進(jìn)行歸并,先將{3}和{2}這兩個(gè)數(shù)組合并成一個(gè)有序的數(shù)組{2,3},同理對(duì)4,1進(jìn)行相同的操作,得到{1,4},然后在將合并好的這兩個(gè)有序數(shù)組進(jìn)行合并,最后合并成{1,2,3,4},歸并完成。

歸并排序算法用java代碼實(shí)現(xiàn)如下:

public static void MergeSort(int[] array,int head,int tail){
      // 判斷數(shù)組的頭部索引是否小于尾部索引
      if(head < tail){
        int middle = (head+tail)/2;
        MergeSort(array,head,middle);
        MergeSort(array,middle+1,tail);
        Merge(array,head,middle,tail);
      }  
    }

    public static void Merge(int[] array, int head, int middle, int tail) {
      // TODO Auto-generated method stub
      int[] temp = new int[tail - head + 1];
      int a = head;
      int b = middle + 1;
      int i = 0;
      // 對(duì)于兩個(gè)數(shù)組中的數(shù)進(jìn)行比較,將較小的值存放在臨時(shí)數(shù)組中
      while(a <= middle && b <=tail){
        
        if(array[a] < array[b]){
          temp[i++] = array[a++];  
        }
        else{
          temp[i++] = array[b++];
        } 
      }
      
      // 將未參與比較的數(shù)組中的數(shù)添加到臨時(shí)數(shù)組中
      while(a <= middle){
        temp[i++] = array[a++];
      }
      
      while(b <= tail){
        temp[i++] = array[b++];
      }
      
      // 將排好序的數(shù)組放回到array數(shù)組中
      System.arraycopy(temp,0,array,head,tail - head + 1);
    }

相關(guān)文章

  • Java8新特性:函數(shù)式編程

    Java8新特性:函數(shù)式編程

    Java8最新引入函數(shù)式編程概念,該項(xiàng)技術(shù)可以大大提升編碼效率,本文會(huì)對(duì)涉及的對(duì)象等進(jìn)行兩種方法的對(duì)比,對(duì)新技術(shù)更直白的看到變化,更方便學(xué)習(xí)
    2021-06-06
  • Java中l(wèi)ength,length(),size()詳解及區(qū)別

    Java中l(wèi)ength,length(),size()詳解及區(qū)別

    這篇文章主要介紹了Java中l(wèi)ength,length(),size()詳解及區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • Java代碼實(shí)現(xiàn)隨機(jī)生成漢字的方法

    Java代碼實(shí)現(xiàn)隨機(jī)生成漢字的方法

    今天小編就為大家分享一篇關(guān)于Java代碼實(shí)現(xiàn)隨機(jī)生成漢字的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 深入理解Java設(shè)計(jì)模式之狀態(tài)模式

    深入理解Java設(shè)計(jì)模式之狀態(tài)模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之職責(zé)鏈模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解
    2021-11-11
  • JavaMail入門教程之接收郵件(4)

    JavaMail入門教程之接收郵件(4)

    這篇文章主要為大家詳細(xì)介紹了JavaMail入門教程之接收郵件的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • shiro編碼和加密代碼詳解

    shiro編碼和加密代碼詳解

    Shiro提供了base64和16進(jìn)制字符串編碼/解碼的API支持,方便一些編碼解碼操作。下面通過實(shí)例代碼給大家詳解shiro編碼和加密知識(shí),感興趣的朋友一起看看吧
    2017-09-09
  • 詳解springcloud Feign的Hystrix支持

    詳解springcloud Feign的Hystrix支持

    這篇文章主要介紹了詳解springcloud Feign的Hystrix支持,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Springboot 集成 lombok.jar過程解析

    Springboot 集成 lombok.jar過程解析

    這篇文章主要介紹了Springboot 集成 lombok.jar過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 探究MyBatis插件原理以及自定義插件實(shí)現(xiàn)

    探究MyBatis插件原理以及自定義插件實(shí)現(xiàn)

    這篇文章主要介紹了探究MyBatis插件原理以及自定義插件實(shí)現(xiàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • 如何使用Java讀取PPT文本和圖片

    如何使用Java讀取PPT文本和圖片

    這篇文章主要介紹了如何使用Java讀取PPT文本和圖片,本篇文章將介紹通過Java程序來讀取PPT幻燈片中的文本及圖片的方法。讀取圖片時(shí),可讀取文檔中的所有圖片,也可以讀取指定幻燈片當(dāng)中的圖片,需要的朋友可以參考下
    2019-07-07

最新評(píng)論

哈尔滨市| 崇阳县| 当雄县| 武隆县| 囊谦县| 漠河县| 蒲江县| 武汉市| 龙川县| 呼和浩特市| 惠州市| 望都县| 和静县| 巩留县| 广宗县| 灯塔市| 克拉玛依市| 三都| 固阳县| 宾阳县| 拜城县| 芒康县| 延安市| 会东县| 阿城市| 绥阳县| 许昌市| 多伦县| 焉耆| 黄大仙区| 延安市| 卢氏县| 长汀县| 乌拉特前旗| 白玉县| 江津市| 金乡县| 老河口市| 荣成市| 调兵山市| 禹州市|