《算法三》插入排序算法及它的时间复杂度

1.插入排序算法

插入排序算法的时间复杂度为O(N)
插入排序算法规则:
1.后面一个数和前面的数相比
2.如果比他大,位置交换,再和前面一个数比较,依次比较
3.最好插入到合适的位置(合适的位置,前面的数都比我小,后面的数都比我大)

下面程序解读:第一轮,第1个数和第2个数比较,排序后较小的在第1位,较大的在第2位。
第二轮,第3个数和前面两个数比较,如果第3个数比第2个数大,那比较结束,因为前两个数已经是有序的了
如果第3个数比第2个数小,第2个数占据第3个数的位置,这个数在和第一个数比较。依次比较,得到有序

Java代码示例
	/**
     * 插入排序
     * 时间复杂度O(N)
     * 局部有序的话特别快
     * @param list
     */
    public static void insertionSort(List<Integer> list){
        for (int out=1;out<list.size();out++){
            int temp = list.get(out);
            int in = out;
            while (in>0&&list.get(in-1)>temp){
                list.set(in,list.get(in-1));
                --in;
            }
            list.set(in,temp);
        }
    }

代码下载地址:https://gitee.com/timezxp/algorithmic
参考书籍:https://www.javabbs.club/bbs/bbs/topic/86-1.html
至此,感谢!
欢迎添加关注!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值