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

圖解Java中插入排序算法的原理與實現

 更新時間:2022年08月24日 09:21:07   作者:老周聊架構  
插入排序的算法描述是一種簡單直觀的排序算法。它的工作原理是通過構建有序序列,對于未排序數據,在已排序序列中從后向前掃描,找到相應位置并插入。本文將通過圖片詳解插入排序的原理及實現,需要的可以參考一下

一、基本思想

插入排序(Insertion-Sort)的算法描述是一種簡單直觀的排序算法。它的工作原理是通過構建有序序列,對于未排序數據,在已排序序列中從后向前掃描,找到相應位置并插入。

二、算法分析

1、算法描述

一般來說,插入排序都采用in-place在數組上實現。具體算法描述如下:

  • 從第一個元素開始,該元素可以認為已經被排序;
  • 取出下一個元素,在已經排序的元素序列中從后向前掃描;
  • 如果該元素(已排序)大于新元素,將該元素移到下一位置;
  • 重復步驟3,直到找到已排序的元素小于或者等于新元素的位置;
  • 將新元素插入到該位置后;
  • 重復步驟2~5。

2、過程分析

(1)、將第一個元素 (1) 標記為已經排序過。

(2)、提取第一個沒有排序過的元素 (28)。

(3)、找出插入提取元素的地方;和已經排序過的元素 1 比較。

(4)、1 > 28 不成立(False), 在現有位置上插入一個元素。

(5)、找出插入提取元素的地方;和已經排序過的元素 28 比較。

(6)、28 > 3 成立(True), 則將現在已經排序過的元素({val1}) 向右移動1格。

(7)、找出插入提取元素的地方;和已經排序過的元素 1 比較。

(8)、1 > 3 不成立(False), 在現有位置上插入一個元素。

(9)、以此類推

三、算法實現

package com.algorithm.tenSortingAlgorithm;

import java.util.Arrays;

public class InsertionSort {
    private static void insertionSort(int[] arr) {
        int preIndex, current;
        for (int i = 1; i < arr.length; i++) {
            preIndex = i - 1;
            current = arr[i];
            while (preIndex >= 0 && arr[preIndex] > current) {
                arr[preIndex + 1] = arr[preIndex];
                preIndex--;
            }
            arr[preIndex + 1] = current;
        }
    }

    public static void main(String[] args) {
        int[] arr = {1,28,3,21,11,7,6,18};
        insertionSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

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

相關文章

  • MyBatis實現插入大量數據方法詳解

    MyBatis實現插入大量數據方法詳解

    最近在公司項目開發(fā)中遇到批量數據插入或者更新,下面這篇文章主要給大家介紹了關于MyBatis實現批量插入的相關資料,需要的朋友可以參考下
    2022-11-11
  • 深入解析@InitBinder注解的功能與應用

    深入解析@InitBinder注解的功能與應用

    這篇文章主要介紹了深入解析@InitBinder注解的功能與應用,從字面意思可以看出這個的作用是給Binder做初始化的,被此注解的方法可以對WebDataBinder初始化,webDataBinder是用于表單到方法的數據綁定的,需要的朋友可以參考下
    2023-10-10
  • Springboot項目中運用vue+ElementUI+echarts前后端交互實現動態(tài)圓環(huán)圖(推薦)

    Springboot項目中運用vue+ElementUI+echarts前后端交互實現動態(tài)圓環(huán)圖(推薦)

    今天給大家?guī)硪黄坛剃P于Springboot項目中運用vue+ElementUI+echarts前后端交互實現動態(tài)圓環(huán)圖的技能,包括環(huán)境配置及圓環(huán)圖前端后端實現代碼,感興趣的朋友一起看看吧
    2021-06-06
  • Java中的abstract和interface

    Java中的abstract和interface

    abstract和interface關鍵字在Java中隨處可見,它是Java三大特性封裝、繼承、多態(tài)特性的實現重要支柱之一。interface關鍵字用于定義接口抽象,其本質上是用于定義類型、定義類所具有的能力,下面來看看詳細內容,需要的朋友可以參考一下
    2021-11-11
  • Spring?BOOT?AOP基礎應用教程

    Spring?BOOT?AOP基礎應用教程

    這篇文章主要介紹了Spring?BOOT?AOP的使用,文章從相關問題展開全文內容詳情,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • Quarkus中ConfigSourceInterceptor的加密配置實現

    Quarkus中ConfigSourceInterceptor的加密配置實現

    這篇文章主要為大家介紹Quarkus中ConfigSourceInterceptor加密配置的實現方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-02-02
  • Java入門交換數組中兩個元素的位置

    Java入門交換數組中兩個元素的位置

    在Java中,交換數組中的兩個元素是基本的數組操作,下面我們將詳細介紹如何實現這一操作,以及在實際應用中這種技術的重要性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • 詳解Java中Optional類的使用方法

    詳解Java中Optional類的使用方法

    Optional的作用是什么?他都有哪些方法?阿里規(guī)范點名說盡量用Optional來避免空指針,那么什么場景用Optional?本篇文章圍繞這三點來進行講解,感興趣的可以學習一下
    2022-05-05
  • Spring Boot創(chuàng)建非可執(zhí)行jar包的實例教程

    Spring Boot創(chuàng)建非可執(zhí)行jar包的實例教程

    這篇文章主要介紹了Spring Boot創(chuàng)建非可執(zhí)行jar包的實例教程,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Mybatis批量更新三種方式的實現

    Mybatis批量更新三種方式的實現

    這篇文章主要介紹了Mybatis批量更新三種方式的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-02-02

最新評論