基础算法——直接插入排序

少壮不努力,老大刷水题。

过去读书的时候因为脑子不好使,很多概念,公式,算法都记不住,等长大了,营养赶上来了,才学习的时候就会觉得更加的深刻。
直接插入排序就像平常我们打扑克牌一样,我们总是在别人发牌的时候,拿到一张牌就把它插到合适的位置上,这个过程中我们的肉眼和大脑做了3件事:
1、拿到新的牌,检查这张牌的数值是多少(从数组里面获取新的元素)
2、从手上的牌里面检索新加入的牌应该插入的位置(检索当前元素插入的位置)
3、手指张开一点,对手上的牌进行扩容(对已排序数组进行扩容,扩容期间需要对元素进行移位)
有了这些战略上的指导,我们就可以进行代码实现了:

    public  int[] InsertSort(int[] array){
                //第一个元素作为哨兵
               int key = array[0];
        for(int i=1;i<array.length;i++){
            for (int j = 0; j <= i; j++) {
                if (array[j] > array[i]){
                    int temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }
        }
        return array;
    }

直接排序

算法特点
时间复杂度为O(n^2),空间复杂度为O(1),比较适用于数据集合基本有序的情况,这样子时间复杂度约为O(n),否则,当n越大,时间复杂度就越高,效率低。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值