【408数据结构与算法】—折半插入排序(十六)

简介: 【408数据结构与算法】—折半插入排序(十六)

折半插入排序

折半插入排序:查找插入位置时采用折半查找法

算法描述

算法分析

  • 折半查找要比顺序查找快,所以折半插入排序就平均性能来说比直接插入排序要快。
  • 它所需要的关键码比较次数与待排序对象序列的初始排列无关,仅依赖于对象个数,在插入第i个对象时,需要经过[log2i]+1次关键码比较,才能确定它应插入的位置
  • 当n较大的时候,总关键码比较的次数比直接插入排序的最坏情况要好得多,但比其最好的情况要差
  • 在对象的初始排列已经按关键码排好序或接近有序时,直接插入排序比折半插入排序执行的关键码比较次数要少

折半插入排序的对象移动次数与直接插入排序相同,依赖于对象的初始排列

  • 减少了比较次数,但是没有减少移动的次数
  • 平均性能优于直接插入排序


相关文章
|
8天前
|
算法 前端开发 搜索推荐
前端算法之插入排序
前端算法之插入排序
14 0
|
8天前
|
搜索推荐 算法 C++
[数据结构]-玩转八大排序(一)&&插入排序&&选择排序
[数据结构]-玩转八大排序(一)&&插入排序&&选择排序
|
8天前
|
C语言
【C语言/数据结构】排序(直接插入排序|希尔排序)
【C语言/数据结构】排序(直接插入排序|希尔排序)
18 4
|
8天前
|
算法 搜索推荐 测试技术
数据结构——lesson10排序之插入排序
数据结构——lesson10排序之插入排序
|
8天前
|
搜索推荐 算法 Java
sort-05-insert sort 插入排序算法详解
这是一个关于排序算法的系列文章总结,包括冒泡排序、快速排序、选择排序、堆排序、插入排序等10种排序算法的详细讲解和Java实现。插入排序是一种简单直观的排序算法,通过构建有序序列并逐个插入新元素来排序。提供的Java代码展示了插入排序的实现过程,并附有测试示例。所有算法已开源在GitHub项目[https://github.com/houbb/sort](https://github.com/houbb/sort)中。
|
8天前
|
人工智能 算法 搜索推荐
直接插入排序、希尔排序、直接选择排序、堆排序、冒泡排序——“数据结构与算法”
直接插入排序、希尔排序、直接选择排序、堆排序、冒泡排序——“数据结构与算法”
数据结构|排序总结(1)|直接插入排序
数据结构|排序总结(1)|直接插入排序
|
8天前
|
人工智能 搜索推荐 Shell
【排序算法】插入排序与希尔排序,你不想知道为什么希尔比插入更快吗?
【排序算法】插入排序与希尔排序,你不想知道为什么希尔比插入更快吗?
|
8天前
|
搜索推荐 算法 Shell
【数据结构与算法】直接插入排序和希尔排序
【数据结构与算法】直接插入排序和希尔排序
|
8天前
|
机器学习/深度学习 搜索推荐 算法
【排序算法】插入排序与选择排序详解
【排序算法】插入排序与选择排序详解