排序算法之插入排序

[插入排序-普通插入排序]

1.算法思想

  • 将元素a视为基序列,遍历数组将元素a右边的元素依次插入序列中,找到比自己小的数置于其后,保证序列一直处于已排序的状态。

2.流程解析

  • 将元素a作为基序列

  • 向序列中插入元素b,比较a、b

    • 若b < a,将a向后移动一个位置,b赋值给a,序列:[b、a]
    • 若b > a,则不变
  • 插入元素c,比较c与a、b

    • 若c < b < a,将b后移,a后移,c前置,序列:[c、b、a]
    • 若b < c < a,将b后移,a不变,c置于a后,序列:[b、c、a]
  • 插入元素d,以此类推

3.动态排序图img

4.代码实现

    public static void insertionSort(int[] array){
        //定义insert,用于存放取出元素
        int insert;
        for (int i = 0; i < array.length - 1; i++) {
            //取出元素值
            insert= array[i + 1];
            //待比较元素下标
            int preIndex = i;
            while(preIndex >= 0 && array[preIndex] > insert){
                //待比较元素>取出元素,将待比较元素后移一个位置
                array[preIndex + 1] = array[preIndex];
                //待比较下标-1,继续与取出元素比较
                preIndex--;
            }
            //待比较元素<取出元素。将取出元素值放在该待比较元素的后一个位置
            array[preIndex + 1] = insert;
        }
    }
    public static void main(String[] args) {
        int[] array = {6 , 1 , 3 , 7 , 2 , 9 , 10 , 8 , 5 , 4};
        System.out.println("排序前Array:"+ Arrays.toString(array));
        insertionSort(array);
        System.out.println("排序后Array:"+ Arrays.toString(array));
        /*
         * 排序前Array:[6, 1, 3, 7, 2, 9, 10, 8, 5, 4]
         * 排序后Array:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
         */
    }

小结理解≠学会,一定要打断点,debug逐步调试,手动敲一遍代码!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值