知识大全 排序 - 插入排序 - 直接插入排序(二)
Posted 知
篇首语:人生必须的知识就是引人向光明方面的明灯。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 排序 - 插入排序 - 直接插入排序(二)相关的知识,希望对你有一定的参考价值。
哨兵的作用
算法中引进的附加记录R[ ]称监视哨或哨兵(Sentinel)
哨兵有两个作用
① 进人查找(插入位置)循环之前 它保存了R[i]的副本 使不致于因记录后移而丢失R[i]的内容;
② 它的主要作用是 在查找循环中 监视 下标变量j是否越界 一旦越界(即j= ) 因为R[ ] key和自己比较 循环判定条件
不成立使得查找循环结束 从而避免了在该循环内的每一次均要检测j是否越界(即省略了循环判定条件 j>= )
注意
① 实际上 一切为简化边界条件而引入的附加结点(元素)均可称为哨兵
【例】单链表中的头结点实际上是一个哨兵
② 引入哨兵后使得测试查找循环条件的时间大约减少了一半 所以对于记录数较大的文件节约的时间就相当可观 对于类似于
排序这样使用频率非常高的算法 要尽可能地减少其运行时间 所以不能把上述算法中的哨兵视为雕虫小技 而应该深刻理解并掌握
这种技巧
给定输入实例的排序过程
设待排序的文件有 个记录 其关键字分别为 为了区别两个相同的关键字 后一个
的下方加了一下划线以示区别 其排序过程见【 动画模拟演示 】
算法分析
算法的时间性能分析
对于具有n个记录的文件 要进行n 趟排序
各种状态下的时间复杂度
>
注意
初始文件按关键字递增有序 简称 正序
初始文件按关键字递减有序 简称 反序
算法的空间复杂度分析
算法所需的辅助空间是一个监视哨 辅助空间复杂度S(n)=O( ) 是一个就地排序
直接插入排序的稳定性
直接插入排序是稳定的排序方法
cha138/Article/program/sjjg/201311/23806相关参考
插入排序(InsertionSort)的基本思想是每次将一个待排序的记录按其关键字大小插入到前面已经排好序的子文件中的适当位置直到全部记录插入完成为止 直接插入排序 直接插入排序(St
(二)插入排序 直接插入排序 voidInsertSort(Sqlist&L)//对顺序表L作直接插入排序 for(i=;i<=Llen
插入排序的准则是在有序序列中插入新的记录以达到扩大有序区的长度的目的一趟直接插入排序的基本思想则是:在对记录序列R[n]的排序过程中区段R[i]中的记录已按关键字非递减的顺序排列将R[i]插入到有
二叉排序树上的运算 ()二叉排序树的插入和生成 ①二叉排序树插入新结点的过程 在二叉排序树中插入新结点要保证插入后仍满足BST性质其插入过程是 (a)若二叉排序树T为空则为待插入的关键字k
今天我回顾了一下原来的排序方法现在分享如下冒泡排序两种实现方式一个是直接实现如下 int[]a=; inttemp=; for(inti=;ia[j+]) temp=a[j]; a[
二分插入排序 二分插入排序查找操作利用二分查找来实现由此进行的插入排序称为二分插入排序二分插入排序算法 cha138/Article/program/sjjg/201311/23
希尔排序(ShellSort)是插入排序的一种因DLShell于年提出而得名 希尔排序基本思想 基本思想 先取一个小于n的整数d作为第一个增量把文件的全部记录分成d个组所有距离为dl的倍数的
希赛教育计算机专业考研专业课辅导招生 希赛教育计算机专业考研专业课辅导视频 希赛教育计算机考研专业课在线测试系统 构成有序链表的过程和直接插入排序的过程基本相同先生成一个只含一个记录的有序链
排序是组织数据最基本的运算排序的方法也很多本章给出了几种典型的排序方法见下表 排序类别插入排序交换排序选择排序归并排序分配排序 排序方法直接插入冒泡法直接选择*归并排序箱排序 希尔排序*快速
PHP实现插入排序算法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 插入排序(Insertio