常见的排序算法——插入排序

3.插入排序

(1)基本思想:

插入排序是将n个待排元素的序列看成两个表,分别为有序表和无序表。起初,有序表中只有一个元素,即下标为0的元素;无序表中含有 n-1个元素,即下标从1到n-1的元素。排序过程就是每次将无序表中的第一个元素拿出,然后依次与有序表中的元素进行比较,找到合适的位置,将其插入,直到无序表中没有元素。

(2)插入排序示意图:

图解过程:

a.共进行 arr.length-1 轮的排序(因为是从下标为1的元素开始作为无序表的)

b.从无序表中拿第一个元素

c.在有序表中找合适的位置

d.将其插入

(3)代码实现:

public void insertSort(int arr[]) {
        for(int i = 1;i < arr.length;i++) {
            //把无序表中的第一个元素拿出来
            int value = arr[i];
            int index = i - 1;
            //开始在有序表中找合适的位置
            while(index >= 0 && value < arr[index]) {
                arr[index + 1] = arr[index]; //数组元素后移
                index--;
            }
            //找到合适的位置,插入
            arr[index + 1] = value;
        }
    }

注:冒泡和选择排序请转  常见的排序算法——选择排序_小何小何h的博客-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值