美文网首页
简单排序3-插入排序

简单排序3-插入排序

作者: gbmaotai | 来源:发表于2019-05-28 17:41 被阅读0次

Insertion sort

image

类似扑克牌的思路。

应用于基本有序的情况

从第一个元素开始,前半部都是有序的,后半部是无序的

  1. 把最新的一个数据插入到一个有序的排列里面
    有序的排列n,从最后一个开始,向前交换,类似冒泡算法
        for(j=n; j>0; j--)
        {
            if(array[j] < array[j-1])
                swap(array, j , j-1);
            else
                break;
        }
  1. 从第一个循环到最后一个无序的数据
    for(i=1;i<arraysize;i++)
    {
        for(j=i; j>0; j--)
        {
            if(array[j] < array[j-1])
                swap(array, j , j-1);
            else
                break;
        }

优化

不用交换,用变量保存要插入的值。

    for(i=1;i<arraysize;i++)
    {
       temp = array[i];
        for(j=i; j>0; j--)
        {
 
            if(temp < array[j-1])
                array[j] = array[j-1];
            else
            {
                break;
            }    
        }
        array[j] = temp;
    }
时间复杂度 O(n2),

最好情况O(n)

相关文章

  • 173. 链表插入排序

    用插入排序对链表排序样例Given 1->3->2->0->null, return 0->1->2->3->nu...

  • 简单排序3-插入排序

    Insertion sort 类似扑克牌的思路。 应用于基本有序的情况 从第一个元素开始,前半部都是有序的,后半部...

  • Java排序算法

    插入排序 直接插入排序 折半插入排序 交换排序 冒泡排序 快速排序 选择排序 简单选择排序 堆排序 其他排序 二路...

  • 常用排序算法(Python实现), 持续更新中

    一、非线性时间比较类排序 交换排序冒泡排序快速排序 插入排序简单插入排序希尔排序 选择排序简单选择排序堆排序 归并...

  • 九种排序算法(重要!!)

    分类:(九种排序算法) 1、插入排序:直接插入排序、二分插入排序、希尔排序; 2、选择排序:简单选择排序、堆排序 ...

  • 排序算法

    冒泡排序 快速排序 直接插入排序 折半插入排序 希尔排序 简单选择排序 堆排序 归并排序

  • 给自己备份的排序代码

    交换排序 冒泡排序 快速排序 插入排序 直接插入排序 希尔排序 选择排序 简单选择排序 堆排序

  • 七大排序算法总结

    题记: 直接插入排序(稳定)-->希尔排序 : 属于插入排序 简单选择排序(稳定)-->堆排序 :属于选择排序...

  • 排序法

    排序分 内部排序和外部排序 内部排序: 插入排序:{直接插入排序,希尔排序} 选择排序:{简单选择排序,堆排序} ...

  • IOS 常用算法

    一:排序算法 排序方式有插入排序,选择排序和交换排序三种。插入排序有直接插入排序和希尔排序。选择排序有简单选择排序...

网友评论

      本文标题:简单排序3-插入排序

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