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

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

    public  int[] InsertSort(int[] array){
                //第一个元素作为哨兵
               int key = array[0];
        for(int i=1;i array[i]){
                    int temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }
        }
        return array;
    }
基础算法——直接插入排序_第1张图片
直接排序

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

你可能感兴趣的:(基础算法——直接插入排序)