欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

圖解Java經(jīng)典算法插入排序的原理與實(shí)現(xiàn)

 更新時(shí)間:2022年09月10日 09:45:23   作者:Binaire-沐辰  
插入排序的算法描述是一種簡單直觀的排序算法。其原理是通過構(gòu)建有序序列,對于未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應(yīng)位置并插入。本文將用Java語言實(shí)現(xiàn)插入排序算法并進(jìn)行可視化,感興趣的可以了解一下

一、算法介紹

插入排序,也稱為直接插入排序。插入排序是簡單排序中效率最好的一種,它也是學(xué)習(xí)其他高級排序的基礎(chǔ),比如希爾排序/快速排序,所以非常重要,而它相對于選擇排序的優(yōu)點(diǎn)就在于比較次數(shù)幾乎是少了一半。

二、算法思想

每次將待排序的元素插入到已排序的序列中,直至全部插入完成。

三、算法原理

  • 把所有元素分為兩個(gè)序列,將第一待排序序列第一個(gè)元素看做一個(gè)有序序列,把第二個(gè)元素到最后一個(gè)元素當(dāng)成是未排序序列。
  • 從未排序序列中的第一個(gè)元素開始,向已排序的序列中插入
  • 倒序遍歷已排序序列,依次和待插入的元素比較,找到一個(gè)小于或等于待插入的元素,插入到該元素后面,其余元素向后移動(dòng)一位

四、動(dòng)圖演示

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

核心代碼

public class InsertionSort {
    //  插入排序
    public static void sort(Comparable[] a){
       for (int i = 1;i < a.length;i++){
           for (int j = i;j > 0;j--){
               //比較索引j處的值與索引j-1處的值,如果j-1索引處的值大,則交換數(shù)據(jù),反之,則找到了合適的位置,退出循環(huán)
               if (greater(a[j - 1],a[j])){
                   swap(a,j - 1,j);
               }else{
                   break;
               }
           }
       }
    }
    //比較 v 是否大于 w
    public static boolean greater(Comparable v,Comparable w){
        return v.compareTo(w) > 0;
    }
    //數(shù)組元素交換位置
    private static void swap(Comparable[] a,int i,int j){
        Comparable temp;
        temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }
}

方法調(diào)用

public class InsertionSortTest {
    public static void main(String[] args) {
        Integer[] arr = {3,44,38,5,47,15,36,26,27};
        InsertionSort.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}
//排序前:{3,44,38,5,47,15,36,26,27}
//排序后:{3,5,15,26,27,36,38,44,47}

六、算法分析

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

當(dāng)待排序的 n 個(gè)元素是正序排列時(shí),是排序的最佳情況,只需要比較(n-1)次,時(shí)間復(fù)雜度是O(n);最壞的情況是該序列是反序排列,此時(shí)就需要比較n(n-1)/2次,時(shí)間復(fù)雜度為 O(n²)。

插入排序的平均時(shí)間復(fù)雜度為 O(n²)

6.2 空間復(fù)雜度

插入排序的空間復(fù)雜度為常數(shù)階O(1)

到此這篇關(guān)于圖解Java經(jīng)典算法插入排序的原理與實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Java插入排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Spring分別實(shí)現(xiàn)定時(shí)任務(wù)方法

    Java Spring分別實(shí)現(xiàn)定時(shí)任務(wù)方法

    這篇文章主要為大家詳細(xì)介紹了Java與Spring設(shè)置動(dòng)態(tài)定時(shí)任務(wù)的方法,定時(shí)任務(wù)的應(yīng)用場景十分廣泛,如定時(shí)清理文件、定時(shí)生成報(bào)表、定時(shí)數(shù)據(jù)同步備份等
    2022-07-07
  • Java實(shí)現(xiàn)斷點(diǎn)續(xù)傳功能的示例代碼

    Java實(shí)現(xiàn)斷點(diǎn)續(xù)傳功能的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)網(wǎng)絡(luò)資源的斷點(diǎn)續(xù)傳功能,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的可以了解一下
    2022-10-10
  • 解決JDK版本沖突顯示問題(雙版本沖突)

    解決JDK版本沖突顯示問題(雙版本沖突)

    這篇文章主要介紹了解決JDK版本沖突顯示問題(雙版本沖突),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • springboot2.0 配置時(shí)間格式化不生效問題的解決

    springboot2.0 配置時(shí)間格式化不生效問題的解決

    這篇文章主要介紹了springboot2.0 配置時(shí)間格式化不生效問題的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • SpringBoot2.3集成ELK7.1.0的示例代碼

    SpringBoot2.3集成ELK7.1.0的示例代碼

    這篇文章主要介紹了SpringBoot2.3集成ELK7.1.0的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Java JVM內(nèi)存區(qū)域詳解

    Java JVM內(nèi)存區(qū)域詳解

    下面小編就為大家?guī)硪黄趈vm java內(nèi)存區(qū)域的介紹。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-11-11
  • 設(shè)計(jì)模式之模版方法模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    設(shè)計(jì)模式之模版方法模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了設(shè)計(jì)模式之模版方法模式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • String實(shí)例化及static final修飾符實(shí)現(xiàn)方法解析

    String實(shí)例化及static final修飾符實(shí)現(xiàn)方法解析

    這篇文章主要介紹了String實(shí)例化及static final修飾符實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java 程序里transient關(guān)鍵字使用方法示例

    Java 程序里transient關(guān)鍵字使用方法示例

    這篇文章主要為大家介紹了Java 程序里transient關(guān)鍵字使用方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • java URL亂碼的解決辦法

    java URL亂碼的解決辦法

    這篇文章介紹了java URL亂碼的解決辦法,有需要的朋友可以參考一下
    2013-09-09

最新評論