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

JAVA十大排序算法之插入排序詳解

 更新時(shí)間:2021年08月23日 09:45:25   作者:阿粵Ayue  
這篇文章主要介紹了java中的插入排序,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

插入排序

當(dāng)我們?cè)谕鎿淇伺频臅r(shí)候,總是在牌堆里面抽取最頂部的一張然后按順序在手中排列。

插入排序是指在待排序的元素中,假設(shè)前面n-1(其中n>=2)個(gè)數(shù)已經(jīng)是排好順序的,現(xiàn)將第n個(gè)數(shù)插到前面已經(jīng)排好的序列中,然后找到合適自己的位置,使得插入第n個(gè)數(shù)的這個(gè)序列也是排好順序的。

1.對(duì)于未排序數(shù)據(jù)(一般取數(shù)組的二個(gè)元素,把第一個(gè)元素當(dāng)做有序數(shù)組),在已排序序列中從左往右掃描,找到相應(yīng)位置并插入。

2.為了給要插入的元素騰出空間,需要將插入位置之后的已排序元素在都向后移動(dòng)一位。

image-20210728162127494

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

對(duì)下面數(shù)組實(shí)現(xiàn)排序:{15, 51, 86, 70, 6, 42, 26, 61, 45, 81, 17, 1}

動(dòng)圖演示

插入排序

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

public class InsertionSort {
    public static final int[] ARRAY = {15, 51, 86, 70, 6, 42, 26, 61, 45, 81, 17, 1};
    public static int[] sort(int[] array) {
        if (array.length == 0) {
            return array;
        }
        //待排序數(shù)據(jù),改數(shù)據(jù)之前的已被排序
        int current;
        for (int i = 0; i < array.length - 1; i++) {
            //已被排序數(shù)據(jù)的索引
            int index = i;
            current = array[index + 1];
            //將當(dāng)前元素后移一位
            while (index >= 0 && current < array[index]) {
                array[index + 1] = array[index];
                index--;
            }
            //插入
            array[index + 1] = current;
        }
        return array;
    }

    public static void print(int[] array) {
        for (int i : array) {
            System.out.print(i + "  ");
        }
        System.out.println("");
    }
    public static void main(String[] args) {
        print(ARRAY);
        System.out.println("============================================");
        print(sort(ARRAY));
    }
}

時(shí)間復(fù)雜度

在上面圖示中,第一趟循環(huán)比較一次,第二趟循環(huán)兩次,依次類推,則最后一趟比較n-1次:

1 + 2 + 3 +… + n-1 = n*(n-1)/2

也就是說,在最壞的情況下(逆序),比較的時(shí)間復(fù)雜度為O(n2)

在最優(yōu)的情況下,即while循壞總是假的,只需當(dāng)前數(shù)跟前一個(gè)數(shù)比較一下就可以了,這時(shí)一共需要比較n-1次,時(shí)間復(fù)雜度為O(n)。

算法穩(wěn)定性

在比較的時(shí)候,過兩個(gè)數(shù)相等的話,不會(huì)進(jìn)行移動(dòng),前后兩個(gè)數(shù)的次序不會(huì)發(fā)生改變,所以插入排序是穩(wěn)定的。

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • OAuth2生成token代碼備忘實(shí)現(xiàn)過程示例

    OAuth2生成token代碼備忘實(shí)現(xiàn)過程示例

    這篇文章主要為大家介紹了OAuth2生成token代碼備忘實(shí)現(xiàn)過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Spring中的@Value和@PropertySource注解詳解

    Spring中的@Value和@PropertySource注解詳解

    這篇文章主要介紹了Spring中的@Value和@PropertySource注解詳解,@PropertySource:讀取外部配置文件中的key-value保存到運(yùn)行的環(huán)境變量中,本文提供了部分實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2023-11-11
  • SpringBoot定時(shí)任務(wù)的實(shí)現(xiàn)詳解

    SpringBoot定時(shí)任務(wù)的實(shí)現(xiàn)詳解

    這篇文章主要介紹了SpringBoot定時(shí)任務(wù)的實(shí)現(xiàn)詳解,定時(shí)任務(wù)是企業(yè)級(jí)開發(fā)中最常見的功能之一,如定時(shí)統(tǒng)計(jì)訂單數(shù)、數(shù)據(jù)庫備份、定時(shí)發(fā)送短信和郵件、定時(shí)統(tǒng)計(jì)博客訪客等,簡(jiǎn)單的定時(shí)任務(wù)可以直接通過Spring中的@Scheduled注解來實(shí)現(xiàn),需要的朋友可以參考下
    2024-01-01
  • 基于Feign傳輸對(duì)象無法接收參數(shù)的問題

    基于Feign傳輸對(duì)象無法接收參數(shù)的問題

    這篇文章主要介紹了基于Feign傳輸對(duì)象無法接收參數(shù)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 使用Javacsv.jar的jar包操作csv文件的方法

    使用Javacsv.jar的jar包操作csv文件的方法

    使用javacsv的jar包很方便的可以操作csv文件。下面通過本教程給大家介紹使用javacsv.jar操作csv文件的方法,感興趣的朋友一起看下吧
    2016-08-08
  • Java 批量刪除Word中的空白段落示例代碼

    Java 批量刪除Word中的空白段落示例代碼

    這篇文章主要介紹了Java 批量刪除Word中的空白段落,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java源碼解析之超級(jí)接口Map

    Java源碼解析之超級(jí)接口Map

    今天給各位小伙伴介紹一下超級(jí)接口Map,文中對(duì)接口Map講的非常詳細(xì),對(duì)正在學(xué)習(xí)java的小伙伴們有很好的幫助喲,需要的朋友可以參考下
    2021-05-05
  • 在Java中實(shí)現(xiàn)二叉搜索樹的全過程記錄

    在Java中實(shí)現(xiàn)二叉搜索樹的全過程記錄

    二叉樹包含了根節(jié)點(diǎn),孩子節(jié)點(diǎn),葉節(jié)點(diǎn),每一個(gè)二叉樹只有一個(gè)根節(jié)點(diǎn),每一個(gè)結(jié)點(diǎn)最多只有兩個(gè)節(jié)點(diǎn),左子樹的鍵值小于根的鍵值,右子樹的鍵值大于根的鍵值,下面這篇文章主要給大家介紹了關(guān)于如何在Java中實(shí)現(xiàn)二叉搜索樹的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Hadoop中的壓縮與解壓縮案例詳解

    Hadoop中的壓縮與解壓縮案例詳解

    壓縮就是通過某種技術(shù)(算法)把原始文件變下,相應(yīng)的解壓就是把壓縮后的文件變成原始文件,本文給大家分享Hadoop中的壓縮知識(shí),感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • Service層異常拋到Controller層處理還是直接處理問題分析

    Service層異常拋到Controller層處理還是直接處理問題分析

    這篇文章主要為大家介紹了Service層異常拋到Controller層處理還是直接處理的問題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09

最新評(píng)論

河曲县| 乌鲁木齐市| 红原县| 祁连县| 新龙县| 璧山县| 康马县| 开远市| 闻喜县| 若羌县| 大名县| 兴化市| 凤冈县| 洪雅县| 修武县| 新乐市| 余干县| 秀山| 措美县| 霍山县| 循化| 探索| 子洲县| 土默特左旗| 梁平县| 丽江市| 华亭县| 长阳| 罗甸县| 华池县| 凯里市| 东乌珠穆沁旗| 尤溪县| 福建省| 万州区| 共和县| 时尚| 临朐县| 贵定县| 理塘县| 沙坪坝区|