数据结构之插入排序:直接插入排序
排序算法:直接插入排序
- 直接插入排序的定义:
- 直接插入排序的原理:
- 直接插入排序的代码实现:
- 例:
- 直接插入排序的性能:
直接插入排序的定义:
直接插入排序的原理:
直接插入排序的代码实现:
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)
排序算法稳定
顺序和链式都适用
数据结构之插入排序:直接插入排序相关推荐
- java数据结构排序实验报告_java数据结构与算法之插入排序详解
本文实例讲述了java数据结构与算法之插入排序.分享给大家供大家参考,具体如下: 复习之余,就将数据结构中关于排序的这块知识点整理了一下,写下来是想与更多的人分享,最关键的是做一备份,为方便以后查阅. ...
- 数据结构与算法之插入排序
数据结构与算法之插入排序 目录 插入排序介绍 插入排序思路分析 代码实现 1. 插入排序介绍 插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的. 2. 插 ...
- 数据结构与算法 | 直接插入排序、希尔排序
前几章讲了选择排序中的直直接选择排序.双向选择排序.堆排序,这次来讲讲利用'插入'为核心来实现的插入排序算法. 插入排序 把待排序的记录按其关键码值的大小逐个插入到一 个已经排好序的有序序列中,直到所 ...
- 数据结构期末复习之插入排序
直接插入排序 折半插入排序 希尔排序
- ****** 四 ******、软设笔记【数据结构】-排序、插入排序、选择排序
一.排序 将一组杂乱无章的数据按一定的规律次序排列起来. 排序的目的是什么? *便于查找! 排序算法的好坏如何衡量? *时间效率--排序速度(即 ...
- 数据结构与算法之插入排序(含改进版)
目录 插入排序概念 代码实现 时间复杂度 代码改进 插入排序概念 插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向 ...
- C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】
目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...
- 王道八大排序:直接插入排序 折半插入排序 希尔排序 冒泡排序 快速排序 归并排序 基数排序
文章目录 1.插入排序 1.1直接插入排序 1.2折半插入排序 1.3希尔排序 2.交换排序 2.1冒泡排序 2.2快速排序 3.选择排序 3.1简单选择排序 3.2堆排序 4.归并排序 5.基数排序 ...
- 数据结构—排序算法总结(插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、合并排序、计数排序)
*排序 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作. 稳定性 在待排序的数组中,如果出现多个相同的关键字,例如:98751555512,中出现重复的数字,在 ...
- (数据结构与算法)插入排序和希尔排序
1. 插入排序 插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序 ...
最新文章
- 北京大学纳家勇治研究组在《美国国家科学院院刊》发文阐明时序记忆的神经机制
- mysql+8.0+新特性_MySQL 8.0的一些新特性汇总大全
- can硬件滤波 stm32cubemx_STM32CubeMX系列教程12:控制器局域网络(CAN)
- 惊呆了!小姐姐用图解 Python,这也太秀了吧?
- java文件全是数字编码_批量将Java源代码文件的编码从GBK转为UTF-8
- linux getdents 例子,Linux那些事儿之我是Sysfs(12)举例三:sysfs读入文件夹内容
- 数据属性和访问器属性
- pop和push等使用方法,every和some、join
- 获取淘宝服务器时间,用于淘宝、天猫秒杀
- 安卓虚拟机_[手机软件] 这款应用牛逼了,安卓手机上的虚拟机 - 虚拟大师
- Firefox定位网页元素工具
- php获取月初月末时间戳
- 微服务之间单点登录和用户权限认证的实现
- 自己实现Latex公式识别
- 工作辛苦了,提前祝大家五一劳动节快乐!!
- leetcode 最长单词
- KEIL设置程序起始地址无效解决方法,STM32 IAP程序起始地址
- 美国计算机视觉专业排名,你了解美国计算机视觉专业吗
- Windows10LTSC wsapp 高CPU占用
- [日常] SinaMail项目和技术能力总结
热门文章
- 现在人人都要准备的2020年六个事关职业生涯的技术趋势
- 老板想okr,员工想kpi
- cad小插件文字刷_小懒人CAD插件管理工具
- c语言规定 程序中用到的变量一定要,C语言为什么要规定对所用到的变量要“先定义,后使用”...
- Mac电脑如何输入command(⌘)、option(⌥)、shift(⇧)等特殊符号
- 《信息学奥赛一本通 提高篇》
- 线性筛法--有测试代码
- python脚本转lua_初次使用Python脚本,proto协议文件转Lua代码
- 手把手带你入门Python爬虫(二、爬虫预备知识)
- js字符串拼接中关于单引号和双引号的那些事