插入排序

1.原理分析

插入排序与打扑克牌是抓牌放位置的原理类似

2. 算法步骤

把第一个元素看成一部分(左),把第二到最后看成一部分(右),

每次拿第二部分中的第一个去和第一部分比较排序(如果待插入的元素(右)与有序序列中的某个元素(左)相等,则将待插入元素插入到相等元素的后面。)

3.核心重点

先把当前要比较的数拿出来,用一个变量(current = i)存放,以便后续比较。如果前一个下标(preIndex = i-1)>=0(即拿出来的数要是第二个及以后的),并且这个数比前一个数(preIndex = i-1)小,则进行交换

4.动态原理图

4.代码演示

import java.util.Arrays;

public class Test2 {

    public static void main(String[] args) {
        int[] array = {3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48};

        //3.插入排序
        System.out.println("排序前:" + Arrays.toString(array));
        insertionSort(array);
        System.out.println("排序后:" + Arrays.toString(array));
    }

    //3.插入排序
    public static void insertionSort(int[] array){

        int current;//定义一个存放当前要比较元素的容器

        //从第二个元素开始遍历,到最后一个
        for (int i = 1; i < array.length; i++) {

            current = array[i];//把右边部分的第一个元素赋值给容器
            int preIndex = i-1;//定义变量存放 容器的前一个元素下标

            //进行判断比较  当取出的这个数前面还有元素时,并且取出的这个数比前一个数小 时  
            while(preIndex >=0 && current < array[preIndex]){

                //将前一个数往后移一位,当前这个下标往前移一位
                array[preIndex +1]=array[preIndex];
                preIndex --;
            }
            //一趟比完,得到遇到比current大的数,停止遍历,进行交换,把current这个值赋给preIndex +1 的位置,因为上一堂比完preIndex--了,位置往前了一个。
            array[preIndex+1]=current;
        }
        
    }

}

5.运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值