首页 > 编程语言 >16 -- 排序算法之插入排序

16 -- 排序算法之插入排序

时间:2022-09-28 17:46:50浏览次数:87  
标签:arr 16 -- 插入排序 元素 int 排序 public

算法介绍:

插入排序属于内部排序法,时对于待排序的元素以插入的方式找到改元素的适当位置,以达到排序的目的。【类似于生活中的斗地主游戏,每抓起一张牌按照便把改张牌按照指定的顺序插入到适当的位置】

插入排序的基本思想:

把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无需表中取出第一个元素,把它的排序码依次与有序元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。

思路图:

 

 动态效果图演示:https://www.bilibili.com/video/BV1Ck4y1B7N4?share_source=copy_web&vd_source=7db086eb00bd8fed934c0bb84de86a58

 1 import java.util.Arrays;
 2 //插入排序
 3 public class InsertSort {
 4 
 5     public static void main(String[] args) {
 6         int[] arr = {10,34,119,2};
 7         insertSort(arr);
 8         System.out.println(Arrays.toString(arr));
 9     }
10     
11     public static void insertSort(int[] arr) {
12         for (int i = 1; i < arr.length; i++) {
13             insert(arr, i);
14         }
15     }
16     
17     /**
18      * @param arr 数组
19      * @param n 待插入的数的索引
20      */
21     public static void insert(int[] arr,int n) {
22         int insertValue = arr[n];
23         while(arr[n-1] > insertValue) {
24             arr[n] = arr[n-1];
25             n--;
26             if (n == 0) {
27                 break;
28             }
29         }
30         arr[n] = insertValue; 
31     }
32     
33 }

 

 

标签:arr,16,--,插入排序,元素,int,排序,public
From: https://www.cnblogs.com/yumengqifei/p/16590206.html

相关文章

  • AI智能检测识别平台EasyCVR出现卡顿及反应慢的原因分析以及解决方法
    EasyCVR平台是我们支持协议最全面的视频平台,它能支持标准协议,包括:国标GB/T28181、RTMP、RTSP/Onvif协议,以及厂家的私有协议与SDK,如:海康Ehome协议、海康SDK、大华SDK等。平......
  • 25 bootstrap--v3--datetimepicker时间选择器--应用
    在模板中引用响应的文件比如:layout.html<linkrel="stylesheet"href="{%static'stark/plugins/datetimepicker/css/bootstrap-datetimepicker.css'%}"/><scripts......
  • geoserver 安装
    下载满足要求的geoserverdockerpullkartoza/geoserver:2.21.1自定义用户密码启动docker,数据路径按需求挂载出来/opt/geoserver/data_dirdockerrun--namege......
  • error CS8773: "Feature 'global using directive' is not available in C# 9.0" afte
    errorCS8773:"Feature'globalusingdirective'isnotavailableinC#9.0"afterdowngradefromnet6.0tonet5.0回答1remove<ImplicitUsings>enable</Implici......
  • 程序员修炼之道—从小工到专家(一)
    第一章——注重实效的哲学(上)1.我的源码让猫给吃了出现了未曾预见到的问题,要设法尽可能职业地处理它们,可以为自己的能力自豪,同时对于无知和错误必须诚实面对。对于不可能......
  • VMWare Workstation安装Ghost版系统
    新建虚拟机的教程可以参考安装纯净版系统的教程,这里不再赘述,下面主要看下与安装纯净版系统的不同之处。如果我们直接启动,会报错networkbootfromamd79c978a,如下图 ......
  • Maven-私服搭建与配置
    一、maven私服搭建1.下载地址https://help.sonatype.com/repomanager3/product-information/download/download-archives---repository-manager-32.启用tar-zxvfnexu......
  • 使用Linux命令sort及uniq对文件或屏幕输出进行分组统计
    【转载】:https://blog.51cto.com/hanzhichao/3436177  在日常Linux操作常常需要对一些文件或屏幕数次中重复的字段进行分组统计。另外分组统计也是常考的面试题之一。......
  • 爱心
    #include<stdio.h>#include<stdlib.h>#include<windows.h>intmain(){floatx,y,a;for(y=1.5;y>-1.5;y-=0.1){for(x=-1.5;x<1.5;x+=0.05)......
  • JS实现数组元素位置交换
    /***数组元素交换位置*@param{array}arr数组*@param{number}index1添加项目的位置*@param{number}index2删除项目的位置*index1和index2分别是两......