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

排序算法圖解之Java插入排序

 更新時(shí)間:2022年11月06日 09:01:00   作者:興趣使然黃小黃  
插入排序是一種最簡(jiǎn)單的排序方法,它的基本思想是將一個(gè)記錄插入到已經(jīng)排好序的有序表中,從而一個(gè)新的、記錄數(shù)增1的有序表。本文通過圖片合示例講解了插入排序的實(shí)現(xiàn),需要的可以了解一下

1.插入排序簡(jiǎn)介

插入排序,一般也被稱為直接插入排序。對(duì)于少量元素的排序,它是一個(gè)有效的算法。插入排序是一種最簡(jiǎn)單的排序方法,它的基本思想是將一個(gè)記錄插入到已經(jīng)排好序的有序表中,從而一個(gè)新的、記錄數(shù)增1的有序表。在其實(shí)現(xiàn)過程使用雙層循環(huán),外層循環(huán)對(duì)除了第一個(gè)元素之外的所有元素,內(nèi)層循環(huán)對(duì)當(dāng)前元素前面有序表進(jìn)行待插入位置查找,并進(jìn)行移動(dòng)

2.插入排序思想及圖解

插入排序的基本思想如下:

把n個(gè)待排序的元素看成為一個(gè)有序表和一個(gè)無(wú)序表,開始時(shí)有序表中只包含一個(gè)元素,無(wú)序表中包含n-1個(gè)元素,排序過程中每次從無(wú)序表中取出第一個(gè)元素,把它的排序碼依次與有序表元素的排序碼進(jìn)行比較,將它插入到有序表中的適當(dāng)位置,使之成為一個(gè)新的有序表。

以序列:{55, 85, 21, 12, 5} 為例, 圖解如下:

粉紅色部分為每輪認(rèn)定的有序部分,其余顏色為認(rèn)定的無(wú)序部分。綠色標(biāo)識(shí)為每輪遍歷的無(wú)序序列的位置,將該位置的元素逐一與有序部分進(jìn)行比較,找到合適的位置進(jìn)行順序表的插入操作。

3.插入排序代碼實(shí)現(xiàn)

import java.util.Arrays;

/**
 * @author 興趣使然黃小黃
 * @version 1.0
 * 插入排序
 */
public class InsertSort {

    public static void main(String[] args) {
        int[] array = {55, 85, 21, 12, 5};
        System.out.println("排序前: " + Arrays.toString(array));
        insertSort(array);
        System.out.println("排序后: " + Arrays.toString(array));
    }

    //插入排序
    public static void insertSort(int[] arr){
        //邊界條件
        if (arr.length < 1){
            return;
        }
        for (int i = 1; i < arr.length; i++) {
            //定義待插入的位置和待插入的數(shù)
            int insertIndex = i-1; //arr[i]前面的位置,便于插入
            int insertVal = arr[i]; //先將待插入的值保存
            //給insertVal找到待插入的位置
            //1.insertIndex > 0防止越界
            //2.insertVal < arr[insertIndex] 說(shuō)明還未找到待插入的位置
            while (insertIndex >= 0 && insertVal < arr[insertIndex]){
                arr[insertIndex+1] = arr[insertIndex];
                insertIndex--;
            }
            if (insertIndex != i){
                arr[insertIndex+1] = insertVal; //插入
            }
            System.out.println("第" + i + "輪: " + Arrays.toString(arr));
        }
    }
}

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

相關(guān)文章

  • SpringBoot+Mybatis實(shí)現(xiàn)Mapper接口與Sql綁定幾種姿勢(shì)

    SpringBoot+Mybatis實(shí)現(xiàn)Mapper接口與Sql綁定幾種姿勢(shì)

    通常我們?cè)谑褂肕ybatis進(jìn)行開發(fā)時(shí),會(huì)選擇xml文件來(lái)寫對(duì)應(yīng)的sql,然后將Mapper接口與sql的xml文件建立綁定關(guān)系,然后在項(xiàng)目中調(diào)用mapper接口就可以執(zhí)行對(duì)應(yīng)的sql,感興趣的可以學(xué)習(xí)一下
    2021-09-09
  • ScheduledExecutorService任務(wù)定時(shí)代碼示例

    ScheduledExecutorService任務(wù)定時(shí)代碼示例

    這篇文章主要介紹了ScheduledExecutorService任務(wù)定時(shí)代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • MyBatis的一級(jí)緩存和二級(jí)緩存以及優(yōu)點(diǎn)說(shuō)明

    MyBatis的一級(jí)緩存和二級(jí)緩存以及優(yōu)點(diǎn)說(shuō)明

    MyBatis的緩存機(jī)制包括一級(jí)緩存和二級(jí)緩存,一級(jí)緩存是SqlSession級(jí)別的緩存,開啟默認(rèn),二級(jí)緩存是跨SqlSession的緩存,需要手動(dòng)開啟和配置,二級(jí)緩存的優(yōu)點(diǎn)是減少數(shù)據(jù)庫(kù)訪問、提高性能、降低負(fù)載和提高可擴(kuò)展性,同時(shí)需要注意緩存可能導(dǎo)致的數(shù)據(jù)不一致問題
    2025-02-02
  • 如何基于JavaFX開發(fā)桌面程序

    如何基于JavaFX開發(fā)桌面程序

    這篇文章主要介紹了如何基于JavaFX開發(fā)桌面程序,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • java高并發(fā)ScheduledThreadPoolExecutor類深度解析

    java高并發(fā)ScheduledThreadPoolExecutor類深度解析

    這篇文章主要為大家介紹了java高并發(fā)ScheduledThreadPoolExecutor類源碼深度解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 利用keytools為tomcat 7配置ssl雙向認(rèn)證的方法

    利用keytools為tomcat 7配置ssl雙向認(rèn)證的方法

    雙向認(rèn)證和單向認(rèn)證原理基本差不多,只是除了客戶端需要認(rèn)證服務(wù)端以外,增加了服務(wù)端對(duì)客戶端的認(rèn)證,下面這篇文章主要介紹了利用keytools為tomcat 7配置ssl雙向認(rèn)證的方法,需要的朋友可以借鑒,下面來(lái)一起看看吧。
    2017-02-02
  • 淺談Java中的集合存儲(chǔ)數(shù)據(jù)后,輸出數(shù)據(jù)的有序和無(wú)序問題

    淺談Java中的集合存儲(chǔ)數(shù)據(jù)后,輸出數(shù)據(jù)的有序和無(wú)序問題

    這篇文章主要介紹了淺談Java中的集合存儲(chǔ)數(shù)據(jù)后,輸出數(shù)據(jù)的有序和無(wú)序問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-09-09
  • 帶你快速搞定java多線程(5)

    帶你快速搞定java多線程(5)

    這篇文章主要介紹了java多線程編程實(shí)例,分享了幾則多線程的實(shí)例代碼,具有一定參考價(jià)值,加深多線程編程的理解還是很有幫助的,需要的朋友可以參考下
    2021-07-07
  • Spring Boot項(xiàng)目集成UidGenerato的方法步驟

    Spring Boot項(xiàng)目集成UidGenerato的方法步驟

    這篇文章主要介紹了Spring Boot項(xiàng)目集成UidGenerato的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • SpringBoot配置文件高級(jí)用法實(shí)戰(zhàn)分享

    SpringBoot配置文件高級(jí)用法實(shí)戰(zhàn)分享

    Spring Boot配置文件的優(yōu)先級(jí)是一個(gè)重要的概念,它決定了當(dāng)存在多個(gè)配置文件時(shí),哪個(gè)配置文件中的配置將被優(yōu)先采用,本文給大家介紹了SpringBoot配置文件高級(jí)用法實(shí)戰(zhàn),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08

最新評(píng)論

砚山县| 大邑县| 广水市| 治多县| 锡林郭勒盟| 凤城市| 广东省| 博罗县| 博罗县| 五莲县| 湟中县| 易门县| 东乡县| 确山县| 宁陕县| 永胜县| 锡林浩特市| 聊城市| 聊城市| 卓尼县| 罗甸县| 长岛县| 柞水县| 密山市| 白玉县| 临海市| 安阳市| 通渭县| 岱山县| 黎川县| 内乡县| 焦作市| 柳州市| 皮山县| 特克斯县| 沙坪坝区| 潼关县| 临汾市| 四子王旗| 绥芬河市| 涪陵区|