`
mixer_a
  • 浏览: 369045 次
社区版块
存档分类
最新评论

排序算法第二篇——折半插入排序

 
阅读更多

算法描述:

在上一篇插入排序算法中,已经提到,插入排序的核心是在有序的集合中找到要插入的位置。所以,在这里介绍一种对插入排序的改进算法,即折半插入排序。折半插入排序是指利用折半查找的算法,在有序集合中找到要插入的位置。

Java代码:


运行结果:

排序前:
719 660 723 463 586 925 971 922 544 890
第1次排序:
660 719 723 463 586 925 971 922 544 890
第2次排序:
660 719 723 463 586 925 971 922 544 890
第3次排序:
463 660 719 723 586 925 971 922 544 890
第4次排序:
463 586 660 719 723 925 971 922 544 890
第5次排序:
463 586 660 719 723 925 971 922 544 890
第6次排序:
463 586 660 719 723 925 971 922 544 890
第7次排序:
463 586 660 719 723 922 925 971 544 890
第8次排序:
463 544 586 660 719 723 922 925 971 890
第9次排序:
463 544 586 660 719 723 890 922 925 971
时间复杂度分析:由于二分查找的时间复杂度为O(log2n),所以折半插入排序算法的复杂度为O(nlog2n)。

稳定性分析:有排序算法稳定性概念可知,折半插入排序算法是稳定的。

分享到:
评论

相关推荐

    用C语言实现常用排序算法

    本项目旨在实现并比较六种经典的排序算法——直接插入排序、折半插入排序、起泡排序、简单选择排序、堆排序以及2-路归并排序,使用C语言编程。为了全面评估这些算法,我们将在一组随机生成的30000个整数上运行它们,...

    内部排序的方法——半插入排序

    半插入排序,也称为二分插入排序,是一种在内部排序领域广泛应用的算法,尤其适用于小规模或部分有序的数据集。这种排序方法结合了直接插入排序的简单性和二分查找的效率,通过减少比较次数来提高排序性能。以下是半...

    课程设计——内部排序算法比较.doc

    直接插入排序的平均比较次数和移动次数为n(n-1)/2,而折半插入排序利用了二分查找,减少了比较次数。 - **选择排序**:选择排序每次找到未排序部分的最小(或最大)元素,与未排序部分的第一个元素交换,平均情况下...

    快速排序折半排序快速排序折半排序

    根据给定的信息,本文将对涉及的排序算法——直接插入排序、快速排序和折半插入排序进行详细解析。 ### 1. 直接插入排序(Insertion Sort) #### 定义与原理 直接插入排序是一种简单的排序算法,其基本思想是通过...

    数据结构——排序ppt

    在这个主题中,我们将探讨几种常见的排序算法,包括直接插入排序、折半插入排序以及希尔排序。 1. **排序基本概念** - **排序**:是指将一组数据按照特定的规则(如升序或降序)重新排列的过程。 - **稳定排序**...

    数据结构课程设计_排序算法比较【完整版】.doc

    2. **实现多种排序算法**:实现七种不同的排序算法——直接插入排序、折半插入排序、冒泡排序、快速排序、选择排序、堆排序和基数排序。此外,还可以考虑实现其他排序算法作为扩展。 3. **性能评估**:对于每种排序...

    排序算法整理大全

    折半插入排序改进了插入排序的查找过程,通过折半查找的方式确定插入位置,减少比较次数。 **原理**: - 与插入排序类似,但采用折半查找来定位插入位置,提高查找效率。 - 首先确定插入位置,然后将元素插入,...

    几种常用算法的C语言实现

    本文将详细介绍四种常见的算法——折半插入、二叉搜索树、直接插入以及折半查找,并提供它们的C语言实现。理解并熟练掌握这些算法对于提升编程技能和优化代码效率至关重要。 1. **折半插入**(Binary Insertion ...

    java基础数据结构-排序算法

    - **折半插入排序**:在直接插入排序的基础上改进,通过二分查找找到插入的位置,降低了查找时间。 - **Shell排序**:通过先将整个待排序的记录分割成为若干子序列分别进行直接插入排序,最后再对整个序列进行一次...

    折半查找main.cpp

    折半插入排序(Binary Insertion Sort)是对插入排序算法的一种改进,所谓排序算法过程,就是不断的依次将元素插入前面已排好序的序列中。 排序思想:有一组数据待排序,排序区间为Array[0]~Array[n-1]。将数据分为...

    数据结构非常有用的非常有用的非常有用的非常有用的

    常见的内部排序算法有直接插入排序、折半插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、2-路归并排序以及基数排序。这些排序算法各有其特点,适用于不同的数据规模和性能需求。 直接插入排序是最...

    3种查找算法——数据结构实验

    2. **折半查找**(二分查找): 折半查找依赖于数据集合的有序性。在已排序的数组中,它首先将目标值与数组中间元素进行比较,如果目标值等于中间元素,则查找成功;若目标值小于中间元素,则在左半部分继续查找;...

    C/C++常用算法手册.秦姣华(有详细书签).rar

    “第2篇算法基本应用篇”详细讲解了算法在排序、查找、数值计算、数论、经典趣题和游戏中的应用;“第3篇算法高级应用篇”讲解了算法的一些高级应用技术,包括在密码学和数据压缩/解压缩中的应用。 《C/C++常用算法...

    面试——数据结构借鉴.pdf

    这份“面试——数据结构借鉴.pdf”文件提供了一些基本的数据结构操作示例,包括排序和查找方法,主要涉及到冒泡排序、直接插入排序以及两种查找算法:监视哨查找和折半查找。 1. **监视哨查找**: 监视哨查找是在...

    数据结构讲义(严蔚敏版)(含算法源码).rar

    数据结构讲义(严蔚敏版)(含算法源码...3. 折半插入排序 64 4. 希尔排序(缩小增量排序) 64 5. 起泡排序 65 6. 快速排序 66 7. 简单选择排序 67 8. 堆排序 68 9. 归并排序 71 10. 基数排序 72 11. 各种排序方法比较 73

    华南 数据结构上机实验代码 完整代码

    折半插入排序 希尔(shell)排序 冒泡排序 快速排序 简单选择排序 堆排序 归并排序(非递归算法) 基数排序 实现图的存储结构 图的深度遍历 图的广度遍历 二叉排序树的复制 计算二叉树的结点个数 删除...

    严蔚敏 数据结构(C语言版) 代码 23490 书中算法

    8.2.2 折半插入排序 211 8.2.3 希尔排序 212 8.3 交换排序 214 8.3.1 冒泡排序 215 8.3.2 快速排序 216 8.4 选择排序 219 8.4.1 简单选择排序 219 8.4.2 堆排序 221 8.5 归并排序 226 8.6 基数...

    数据结构——第9章 数据结构 anyview作业系统答案

    2. **折半查找的递归实现**(9.26) 折半查找通常用于有序数组,其效率远高于线性搜索。给出的 `BinSearch` 函数采用递归方式实现。它首先计算中间索引 `mid`,然后比较中间元素的键值与目标 `k`。如果相等,返回...

    数据结构实验——查找算法的实现.doc

    2. **折半查找**:也称为二分查找,适用于有序数组。它通过每次将查找区间减半来提高查找效率。在理想情况下,平均查找长度为log2(n)+1,其中n是数组的元素数量。 3. **二叉排序树**:是一种特殊的二叉树,其中每个...

Global site tag (gtag.js) - Google Analytics