《一句话算法之插入排序》

前言

        插入排序可能没有冒泡排序和选择排序如雷贯耳,猛一看比较复杂,其实理解思想后,个人感觉比冒泡排序学起来还简单,而且虽说时间复杂度也是O(n2)级别,但其实插入排序可以提前终止内层循环,其实是要比选择排序要快的。写博客之前本来不想提时间复杂度这个概念的,因为我的态度就是稳扎稳打,先学会实现,不靠百度纯手打,再一步一步讨论时间复杂度以及各个算法的优劣,甚至到最后封装成泛型实现类的排序等等。道生一,一生二,二生三,三生万物。古人诚不欺我,哈哈,扯远了。

插入排序

    待排序数据插入到前面已经排好的数据中(每次插完,前面又是新的排好的序列)

void insertSort(int[] array){
//第一层也是控制循环用的,从1开始,仔细体会为什么,默认第一个元素排好序,i为几,就代表已经排好了几个
for (int i = 1; i < array.length; i++) {
//此时 a[j]待排序数据不断的和前面已经排好的元素比较,因此要j--
for (int j = i; j > 0; j--) {
//只要比前面小,就不停向前面比较,直到比前面大为止
if(array[j]<array[j-1]){
int temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
}else{
//当前数值比前面最后一个数要大,即比前面所有的数都大,前面的数肯定是已经排好序了,插入排序可以提前终止内层循环,因此插入排序要比选择排序要快
break;
        }
    }
    }
    }

    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值