排序算法:直接插入排序

  • 直接插入排序的定义:
  • 直接插入排序的原理:
  • 直接插入排序的代码实现:
  • 例:
  • 直接插入排序的性能:

直接插入排序的定义:

直接插入排序的原理:

直接插入排序的代码实现:

void InsertSort(int a[],int n){int i,j;for(i=2;i<n;i++){               //依次将A[2]~A[n]插入到前面已排序队列a[0] = a[i];               //哨兵 for(j=i-1;a[0] < a[j];j--) //从后往前查找待插入位置a[j+1] = a[j];           //后移a[j+1] = a[0];                //复制到插入位置}
}

ps:
哨兵:不用判断是否比较到了最后一个元素;保存插入的值。
a[0] 是哨兵,不存放输入的数据

例:

直接插入排序的性能:

空间复杂度: O(1)
时间复杂度: O(n^2)

主要来自于对比关键字、移动元素,若有n个元素,则需要n-1趟处理
最好:原本有序=>O(n)
最坏:原本逆序=>O(n^2)
平均:O(n)

排序算法稳定
顺序和链式都适用

数据结构之插入排序:直接插入排序相关推荐

  1. java数据结构排序实验报告_java数据结构与算法之插入排序详解

    本文实例讲述了java数据结构与算法之插入排序.分享给大家供大家参考,具体如下: 复习之余,就将数据结构中关于排序的这块知识点整理了一下,写下来是想与更多的人分享,最关键的是做一备份,为方便以后查阅. ...

  2. 数据结构与算法之插入排序

    数据结构与算法之插入排序 目录 插入排序介绍 插入排序思路分析 代码实现 1. 插入排序介绍 插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的. 2. 插 ...

  3. 数据结构与算法 | 直接插入排序、希尔排序

    前几章讲了选择排序中的直直接选择排序.双向选择排序.堆排序,这次来讲讲利用'插入'为核心来实现的插入排序算法. 插入排序 把待排序的记录按其关键码值的大小逐个插入到一 个已经排好序的有序序列中,直到所 ...

  4. 数据结构期末复习之插入排序

    直接插入排序 折半插入排序 希尔排序

  5. ****** 四 ******、软设笔记【数据结构】-排序、插入排序、选择排序

    一.排序     将一组杂乱无章的数据按一定的规律次序排列起来.     排序的目的是什么?         *便于查找!     排序算法的好坏如何衡量?         *时间效率--排序速度(即 ...

  6. 数据结构与算法之插入排序(含改进版)

    目录 插入排序概念 代码实现 时间复杂度 代码改进 插入排序概念 插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向 ...

  7. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

  8. 王道八大排序:直接插入排序 折半插入排序 希尔排序 冒泡排序 快速排序 归并排序 基数排序

    文章目录 1.插入排序 1.1直接插入排序 1.2折半插入排序 1.3希尔排序 2.交换排序 2.1冒泡排序 2.2快速排序 3.选择排序 3.1简单选择排序 3.2堆排序 4.归并排序 5.基数排序 ...

  9. 数据结构—排序算法总结(插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、合并排序、计数排序)

    *排序 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作. 稳定性 在待排序的数组中,如果出现多个相同的关键字,例如:98751555512,中出现重复的数字,在 ...

  10. (数据结构与算法)插入排序和希尔排序

    1. 插入排序 插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序 ...

最新文章

  1. 北京大学纳家勇治研究组在《美国国家科学院院刊》发文阐明时序记忆的神经机制
  2. mysql+8.0+新特性_MySQL 8.0的一些新特性汇总大全
  3. can硬件滤波 stm32cubemx_STM32CubeMX系列教程12:控制器局域网络(CAN)
  4. 惊呆了!小姐姐用图解 Python,这也太秀了吧?
  5. java文件全是数字编码_批量将Java源代码文件的编码从GBK转为UTF-8
  6. linux getdents 例子,Linux那些事儿之我是Sysfs(12)举例三:sysfs读入文件夹内容
  7. 数据属性和访问器属性
  8. pop和push等使用方法,every和some、join
  9. 获取淘宝服务器时间,用于淘宝、天猫秒杀
  10. 安卓虚拟机_[手机软件] 这款应用牛逼了,安卓手机上的虚拟机 - 虚拟大师
  11. Firefox定位网页元素工具
  12. php获取月初月末时间戳
  13. 微服务之间单点登录和用户权限认证的实现
  14. 自己实现Latex公式识别
  15. 工作辛苦了,提前祝大家五一劳动节快乐!!
  16. leetcode 最长单词
  17. KEIL设置程序起始地址无效解决方法,STM32 IAP程序起始地址
  18. 美国计算机视觉专业排名,你了解美国计算机视觉专业吗
  19. Windows10LTSC wsapp 高CPU占用
  20. [日常] SinaMail项目和技术能力总结

热门文章

  1. 现在人人都要准备的2020年六个事关职业生涯的技术趋势
  2. 老板想okr,员工想kpi
  3. cad小插件文字刷_小懒人CAD插件管理工具
  4. c语言规定 程序中用到的变量一定要,C语言为什么要规定对所用到的变量要“先定义,后使用”...
  5. Mac电脑如何输入command(⌘)、option(⌥)、shift(⇧)等特殊符号
  6. 《信息学奥赛一本通 提高篇》
  7. 线性筛法--有测试代码
  8. python脚本转lua_初次使用Python脚本,proto协议文件转Lua代码
  9. 手把手带你入门Python爬虫(二、爬虫预备知识)
  10. js字符串拼接中关于单引号和双引号的那些事