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

Java經(jīng)典排序算法之歸并排序?qū)崿F(xiàn)代碼

 更新時(shí)間:2023年10月20日 10:01:42   作者:惡魔青葉  
這篇文章主要介紹了Java經(jīng)典排序算法之歸并排序?qū)崿F(xiàn)代碼,歸并排序是建立在歸并操作上的一種有效的排序算法,該算法是采用分治法的一個(gè)非常典型的應(yīng)用,將已有序的子序列合并,得到完全有序的序列,需要的朋友可以參考下

1.簡(jiǎn)介

歸并排序(MERGESORT)是建立在歸并操作上的一種有效的排序算法,該算法是采用分治法(Divide and Conquer)的一個(gè)非常典型的應(yīng)用。

將已有序的子序列合并,得到完全有序的序列;即先使每個(gè)子序列有序,再使子序列段間有序。若將兩個(gè)有序表合并成一個(gè)有序表,稱為二路歸并。

歸并排序的時(shí)間復(fù)雜度是O(nlogn), 空間復(fù)雜度是O(n)。是穩(wěn)定的排序。

歸并排序的思路流程是:

  1. 第一步、將待排序數(shù)列中的數(shù)字分為若干組,每個(gè)數(shù)字分成一組,即如果數(shù)列中8個(gè)數(shù)字,就分成8組。
  2. 第二步、將這些組兩兩合并,保證合并之后的數(shù)列是有序的。
  3. 第三步、重復(fù)第二步操作,直到只剩下一組,即排序完成。

看文字理解可能有點(diǎn)云里霧里,接下來(lái)我們用圖來(lái)解釋下這個(gè)過(guò)程。

2.圖解步驟

在這里插入圖片描述

在這里插入圖片描述

3.代碼實(shí)現(xiàn)

import java.util.Arrays;
public class MergeSort {
    public static void main(String[] args) {
        int[] arr = {2,3,4,1,5,7,8,6};
        System.out.println(Arrays.toString(arr));
        mergeSort(arr,0, arr.length-1);
        System.out.println(Arrays.toString(arr));
    }
    /**
     *
     * @param arr  //待排序數(shù)組
     * @param low  //左邊標(biāo)識(shí)
     * @param high  //右邊標(biāo)識(shí)
     */
    public static void mergeSort(int[] arr,int low,int high){
           if(low >= high){
               return;
           }
           int mid = (low +high) >>> 1;
           mergeSort(arr,low,mid);
           mergeSort(arr,mid+1,high);
           //合并
           merge(arr, low, mid, high);
    }
    private static void merge(int[] arr, int low, int mid, int high) {
          int s1 = low;  //第一個(gè)歸并段開(kāi)始
          int s2 = mid+1 ;//第二個(gè)歸并段開(kāi)始
          //臨時(shí)數(shù)組
          int[] ret  = new int[high-low +1];
          int i = 0; //ret數(shù)組的下標(biāo)
         //歸并段有數(shù)據(jù)
         while (s1 <= mid && s2 <=high )
         {
                  //s1和s2數(shù)據(jù)比較
             if(arr[s1] <= arr[s2]){
                 ret[i++] = arr[s1++];
             }else {
                    ret[i++] = arr[s2++];
             }
         }
         //跳出循環(huán)
        while (s1 <= mid){
            ret[i++] = arr[s1++];
        }
        while (s2 <= high){
            ret[i++] = arr[s2++];
        }
        for (int j = 0; j < ret.length ; j++) {
                    arr[j+low]= ret[j];
        }
    }
}

到此這篇關(guān)于Java經(jīng)典排序算法之歸并排序?qū)崿F(xiàn)代碼的文章就介紹到這了,更多相關(guān)Java歸并排序?qū)崿F(xiàn)代碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot中使用Redisson的實(shí)現(xiàn)示例

    SpringBoot中使用Redisson的實(shí)現(xiàn)示例

    Redission是一個(gè)強(qiáng)大的Java庫(kù),用于構(gòu)建和管理分布式系統(tǒng)中的緩存和任務(wù)調(diào)度,本文主要介紹了SpringBoot中使用Redisson的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2023-12-12
  • SpringBoot和Vue項(xiàng)目服務(wù)器發(fā)布流程分享

    SpringBoot和Vue項(xiàng)目服務(wù)器發(fā)布流程分享

    本文詳細(xì)介紹了如何將SpringBoot和Vue項(xiàng)目發(fā)布到阿里云ECS服務(wù)器上的步驟,包括準(zhǔn)備服務(wù)器、安裝寶塔、配置數(shù)據(jù)庫(kù)、打包項(xiàng)目、上傳文件、設(shè)置端口、安裝軟件和注冊(cè)網(wǎng)站等
    2025-02-02
  • Springboot通過(guò)谷歌Kaptcha?組件生成圖形驗(yàn)證碼功能

    Springboot通過(guò)谷歌Kaptcha?組件生成圖形驗(yàn)證碼功能

    Kaptcha是谷歌開(kāi)源的一款簡(jiǎn)單實(shí)用的圖形驗(yàn)證碼組件。我個(gè)人推薦它的最大原因是容易上手,采用約定大于配置的方式,快速契合到項(xiàng)目中,這篇文章主要介紹了Springboot通過(guò)谷歌Kaptcha組件生成圖形驗(yàn)證碼的方法,需要的朋友可以參考下
    2023-05-05
  • Java 獲取原始請(qǐng)求域名實(shí)現(xiàn)示例

    Java 獲取原始請(qǐng)求域名實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了Java 獲取原始請(qǐng)求域名實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 淺析fastjson2時(shí)間序列化和反序列化的簡(jiǎn)單使用

    淺析fastjson2時(shí)間序列化和反序列化的簡(jiǎn)單使用

    在項(xiàng)目中將fastjson升級(jí)為fastjson2后,我們遇到了一些與fastjson不完全兼容的問(wèn)題,所以本文就來(lái)探討下fastjson2的時(shí)間序列化和反序列化的簡(jiǎn)單使用吧
    2025-01-01
  • Spring中WebDataBinder使用詳解

    Spring中WebDataBinder使用詳解

    這篇文章主要為大家詳細(xì)介紹了Spring中WebDataBinder的使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Spring Boot控制層參數(shù)綁定@RequestPart 注解的使用

    Spring Boot控制層參數(shù)綁定@RequestPart 注解的使用

    @RequestPart是一個(gè)非常重要但常被忽略的注解,專門用于處理multipart/form-data請(qǐng)求中的復(fù)雜數(shù)據(jù)類型,下面給大家介紹Spring Boot控制層參數(shù)綁定@RequestPart 注解的使用,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔斷的示例

    Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔斷的示例

    這篇文章主要介紹了Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔斷的示例,幫助大家更好的理解和學(xué)習(xí)使用Spring Cloud,感興趣的朋友可以了解下
    2021-03-03
  • Java結(jié)合redistemplate使用分布式鎖案例講解

    Java結(jié)合redistemplate使用分布式鎖案例講解

    在Java中使用RedisTemplate結(jié)合Redis來(lái)實(shí)現(xiàn)分布式鎖是一種常見(jiàn)的做法,特別適用于微服務(wù)架構(gòu)或多實(shí)例部署的應(yīng)用程序中,以確保數(shù)據(jù)的一致性和避免競(jìng)態(tài)條件,下面給大家分享使用Spring Boot和RedisTemplate實(shí)現(xiàn)分布式鎖的案例,感興趣的朋友一起看看吧
    2024-08-08
  • Java?Cloneable接口的深拷貝與淺拷貝詳解

    Java?Cloneable接口的深拷貝與淺拷貝詳解

    這篇文章主要為大家詳細(xì)介紹了Java?Cloneable接口的深拷貝與淺拷貝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03

最新評(píng)論

黄大仙区| 大港区| 海宁市| 尚义县| 伊春市| 侯马市| 沧州市| 乐东| 饶河县| 枝江市| 宜昌市| 邵东县| 罗田县| 钟山县| 长汀县| 保山市| 始兴县| 五大连池市| 康定县| 垣曲县| 武冈市| 怀仁县| 固镇县| 汉沽区| 厦门市| 揭阳市| 伊宁市| 安达市| 东安县| 郧西县| 陆川县| 昭通市| 青河县| 北辰区| 天峻县| 兴海县| 黄大仙区| 时尚| 天水市| 云林县| 会泽县|