插入排序及其简单优化

作者: XJBT | 来源:发表于2019-06-13 20:13 被阅读0次

插入排序是稳定的排序方法,时间复杂度是O(n^2)
最坏情况(完全逆序的情况)O(n^2), 最好情况(完全顺序的情况)O(n),平均情况O(n^2),

所以十分适用于基本有序的数组

直接插入排序

    void Insert_Sort(int *a,int n)
    {
        int i,j;
        for(i=1; i<n; i++)
        {
            if(a[i]<a[i-1])
            {
                int t=a[i];
                for(j=i-1; j>=0&&a[j]>t; j--)
                {
                    a[j+1]=a[j];
                }
                a[j+1]=t;
            }
        }
    }

二分优化

二分优化指的是通过二分查找的方式快速找到需要插入的位置,但是插入的方式还是需要一个个的移动元素,所以优化的只是少一些比较元素大小的步骤

    //二分优化
    void Insert_Sort_Binary(int *a,int n)
    {
        for(int i=1; i<n; i++)
        {
            if(a[i]<a[i-1])
            {
                int left=0;
                int right=i-1;
                int t=a[i];
                // 利用二分查找的方法快速找到应该插入的位置,可以少进行一些比较,但是需要进行的移动次数还是一样的,所以优化的效果还是有限的
                while(left<=right)
                {
                    int mid=(left+right) / 2;
                    if(a[mid]>t)
                        right=mid-1;
                    else
                        left=mid+1;
                }
                for(int j=i-1; j>=left; j--)
                {
                    a[j+1]=a[j];
                }
                a[left]=t;
            }
        }
    }

插入排序的另一种优化就是希尔排序

相关文章

  • 插入排序及其简单优化

    插入排序是稳定的排序方法,时间复杂度是O(n^2)最坏情况(完全逆序的情况)O(n^2), 最好情况(完全顺序的情...

  • 插入排序及其优化

    基本思路 正如生活中整理扑克的方法:一张一张的来,将每一张扑克插入到其他已经有序的扑克中的适当位置。 Q:计算机中...

  • c算法O(n)^2(一)

    选择排序 插入排序 优化插入排序算法

  • 插入排序算法及其优化(Rust)

    插入排序算法的原理是,通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。开始时,认...

  • 对于基础排序算法的简要总结

    本文主要分析排序算法中的选择排序、插入排序、希尔排序、归并排序、快速排序和堆排序,以及其部分优化方式,部分代码示例...

  • 冒泡排序及其简单优化

    冒泡排序是最基础的排序算法,每一轮的冒泡都是把最小的或者最大的冒到一端,是一种稳定的排序算法,时间复杂度为O(n^...

  • 选择排序及其简单优化

    选择排序是不稳定的排序算法,譬如[8, 8, 2],在第一轮选择的时候是选择到最小值2,第一个8与2交换后两个8之...

  • 数据结构与算法---排序篇

    前言: 2016年5月21号开始学习排序算法及其主要思想,并通过代码实现 插入排序 插入排序有两种: 直接插入排序...

  • chapter 11

    1. 内容## 讲了插入排序和快速排序以及它们的优化。 1.1 插入排序### 1.2 快速排序### 2. 习题...

  • 排序算法(二):希尔排序

    希尔排序是插入排序的优化版,其算法表示如下:

网友评论

    本文标题:插入排序及其简单优化

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