美文网首页
基础算法——直接插入排序

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

作者: 黑白咖 | 来源:发表于2017-03-13 06:54 被阅读9次

    过去读书的时候因为脑子不好使,很多概念,公式,算法都记不住,等长大了,营养赶上来了,才学习的时候就会觉得更加的深刻。就像平常我们打扑克牌一样,我们总是在别人发牌的时候,拿到一张牌就把它插到合适的位置上,这个过程中我们的肉眼和大脑做了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越大,时间复杂度就越高,效率低。

    相关文章

      网友评论

          本文标题:基础算法——直接插入排序

          本文链接:https://www.haomeiwen.com/subject/djffnttx.html