插入排序

排序思想

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

排序原理

1.把所有元素分为两组,已经排序和未排序的;
2.找到未排序的组中的第一个元素,向已经排序的组中进行插入;
3.倒叙遍历已经排序的元素,依次和待插入元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个位置,其他的元素向后移动一位。
在这里插入图片描述

代码实现

  @Test
    public void insertSort(){
        int[] arr={101, 34, 119, 1  };
        for (int i=1;i<arr.length;i++){
            //定义一个带插入的数
            int num=arr[i];
            //定义一个变量指向num的前一个数的下标
            int head=i-1;
            //给num找到插入的位置
            //说明
            //1.last>=0保证在给num找插入位置时不越界
            //2.num<arr[last]待插入的数,表示还未找到插入位置
            //3.就需要将arr[last]后移
            while (head>=0&&num<arr[head]){
                //未找到将arr[head]后移,交换
                arr[head+1]=arr[head];
                //head往前走
                head--;
            }
            //当推出循环时,说明找到了插入位置,last+1
            arr[head+1]=num;
            System.out.println("第"+(i)+"轮插入");
            System.out.println(Arrays.toString(arr));
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~四时春~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值