排序-插入排序-折半插入排序及2路插入排序

statement:本篇内容只是建立在我目前经验的基础之上,必然有不完善甚至是不正确的地方,请谨慎阅读,如果能指出错误与不足之处,更是不甚感激
PS1:代码部分将使用Java语言进行展示
PS2:本节排序算法基于顺序表排序


一、原理
  • 直接插入排序:
    • 与直接插入排序不同的是,查找插入点的过程使用的是折半查找法
  • 2路插入排序:
    • 2路插入排序目的是为了减少插入后数据移动的操作
    • 原理是假设待排序队列第一个元素是整个序列中一个中间的值,然后比该样本值小的在一个数据结构内进行插入排序,比该样本值大的在一个数据结构内进行插入排序,相当于减少了一半的序列长度,自然也就减少了插入操作中移动元素的操作次数
二、时间复杂度

折半插入排序仅仅减少了查找插入点的时间,但总体时间复杂度仍然是O(n2)
2路插入排序仅仅减少了移动元素的时间,如果遇到最坏的情况(即第一个值是整个序列中最大或者最小的),2路插入排序没有任何优势,其总体时间复杂度仍然是O(n2)


参考文档:
[1] [数据结构C语言版 -- 清华大学出版社]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、概述 排序算法概念 在计算机科学与数学中,一个排序算法是将一组杂乱无章的数据按一定的规律顺次排列起来的算法。排...
    简书冷雨阅读 4,783评论 0 0
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 5,040评论 0 2
  • 排序的基本概念 在计算机程序开发过程中,经常需要一组数据元素(或记录)按某个关键字进行排序,排序完成的序列可用于快...
    Jack921阅读 5,373评论 1 4
  • 选择排序: 首先,找到数组中最小的那个元素,其次,将他和数组中的第一个元素交换位置(如果第一个元素就是最小元素那么...
    鸡哥cy阅读 5,807评论 0 0
  • 排序稳定性首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后...
    咸鱼翻身ing阅读 2,548评论 0 1

友情链接更多精彩内容