zoukankan      html  css  js  c++  java
  • 16、排序算法-插入排序

    来源:https://www.bilibili.com/video/BV1B4411H76f?p=60

    一、思路

    插入排序:将原始数据分为一个有序表无序表,从无序表依次选择数据,插入到有序表的合适位置。

    例如:[101,34,119,1],从小到大排列

    开始:有序表:[101],无序表[34,119,1]

    第一趟:选34与有序表比较。有序表:[34,101],无序表[119,1]

    第二趟:选119与有序表比较。有序表:[34,101,119],无序表[1]

    第三趟:选1与有序表比较。有序表:[1,34,101,119],无序表[]

    关键在于怎么比较,这里说的是分成两个表,本质还是一个数组。

    在第一趟,我们先取出要插入的数据34,与101比较,比较的结果是101应该放到原来34的位置(后移一位),前面没有数据了,不再继续比较,因为进行过位置移动,34要放到空出的位置。

    在第二趟,我们同样先取出要插入的数据119,先跟101比较,不必交换,再与34比较,不必交换。前面没有数据了,不再继续比较,因为没进行过位置移动,199不动。

    在第三趟,我们同样先取出要插入的数据1,先跟119比较,119需要放到1原来的位置(后移一位),再跟101比较,101要放到后一个位置,最后跟34比较,34要后移一位。前面没有数据了,不再继续比较,因为进行过位置移动,1要放到空出的位置。

    二、实现

     1 public class InsertSort {
     2     public static void main(String[] args) {
     3         int[] arr = {101,34,119,1,23};
     4         System.out.println(Arrays.toString(arr));
     5 
     6         insertSort(arr);
     7         System.out.println(Arrays.toString(arr));
     8 
     9     }
    10 
    11     public static void insertSort(int[] arr){
    12         for (int i = 1; i < arr.length; i++) {
    13             int insertIndex = i - 1;
    14             int insertVal = arr[i];
    15             while (insertIndex >= 0 && insertVal < arr[insertIndex]){
    16                 //数据顺序后移
    17                 arr[insertIndex + 1] = arr[insertIndex];
    18                 insertIndex--;
    19             }
    20             if(insertIndex + 1 != i){
    21                 //位置发生过改变,要插入的数据放到空出的位置
    22                 arr[insertIndex + 1] = insertVal;
    23             }
    24         }
    25     }
    26 }

    结果

    [101, 34, 119, 1, 23]
    [1, 23, 34, 101, 119]

    中间出了一点问题,idea没法输入中文注释了,解决方案:Ctrl+Shift切换一下输入法,再切换回来就又行了。心累。

     

  • 相关阅读:
    HTML基本知识
    几个常用的正则表达式
    C#操作文件
    传说中的WCF(3):多个协定
    传说中的WCF(2):服务协定的那些事儿
    查询表、存储过程、触发器的创建时间和最后修改时间
    SQL四舍五入及两种舍入
    自制 JS.format带分页索引
    js:字符串(string)转json
    $.each 和$(selector).each()的区别
  • 原文地址:https://www.cnblogs.com/zhao-xin/p/13162239.html
Copyright © 2011-2022 走看看