使用插入排序有充分的理由吗?

2023-12-14

对于通用排序,答案似乎是否定的,因为快速排序、合并排序和堆排序在平均情况和最坏情况下往往表现更好。然而,插入排序似乎在增量排序方面表现出色,即在很长一段时间内一次向列表添加一个元素,同时保持列表排序,特别是如果插入排序是作为链表实现的(O(log n) 平均情况与 O(n))。然而,堆似乎能够(或几乎)执行增量排序(从堆中添加或删除单个元素的最坏情况为 O(log n))。那么,与其他基于比较的排序算法或堆相比,插入排序到底有什么优势呢?


From http://www.sorting-algorithms.com/insertion-sort:

Although it is one of the elementary sorting algorithms with O(n2) worst-case time, insertion sort is the algorithm of choice either when the data is nearly sorted (because it is adaptive) or when the problem size is small (because it has low overhead).

由于这些原因,并且由于它也是稳定的,插入排序是 通常用作递归基本情况 (当问题规模较小时) 更高的开销分而治之 排序算法,例如归并排序 或快速排序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用插入排序有充分的理由吗? 的相关文章

  • 关于复杂性(如果使用基于比较的排序算法)

    众所周知 任何基于比较模型的排序算法都有nlogn的下界 即Omega nlogn 这可以用数学证明 但众所周知 荷兰国旗问题可以在 O n 时间内对 3 个不同的元素 重复使用 进行排序 它也是基于比较模型 但可以在 O n 时间内进行排
  • 如何在javascript中计算日出和日落?

    我正在使用appcelerator titan开发一个IOS应用程序 我想让我的应用程序在日出和日落时向用户发送本地通知 解决这个问题的一个好工具是使用 YQL 的雅虎天气 但是 雅虎天气仅供非商业用途 我正在尝试找到一个javascrip
  • Javascript树遍历算法

    我需要帮助以深度优先的方式遍历树结构 我无法想出一个算法来正确地做到这一点 我的输入是这样的 A B C 1 2 a b c d 输出应采用以下形式 A 1 a A 1 b A 1 c A 1 d A 2 a A 2 b A 2 c A 2
  • 以最少插入次数将字符串转换为回文

    这是一个来自日常编码问题 https www dailycodingproblem com 给定一个字符串 找到可以通过插入来组成的回文数 单词中任何位置的字符数尽可能少 如果有 大于一个可以制作的最小长度的回文 返回 字典顺序最早的一个
  • 检测 JSON 数组中没有重复项的最快正确方法是什么?

    我需要检查数组中的所有项目是否都是唯一的serde json Value 由于该类型没有实现Hash我想出了以下解决方案 use serde json json Value use std collections HashSet fn is
  • 用于将分层平面数据(带 ParentID)转换为带缩进级别的排序平面列表的算法

    我有以下结构 MyClass guid ID guid ParentID string Name 我想创建一个数组 其中包含按层次结构中应显示的顺序排列的元素 例如 根据它们的 左 值 以及将 guid 映射到缩进级别的散列 例如 ID N
  • D3.js 对力导向图使用什么算法?

    我有兴趣确切地知道 D3 使用什么算法来实现库中的力导向图功能 读过科布罗夫的总结 http www cs brown edu rt gdhandbook chapters force directed pdf力导向图的历史让我有点困惑 不
  • 棒材切割 - 动态规划

    问题陈述 棒材切割问题如下 给定一根长度为n英寸和价格表Pi for i 1 2 3 n 确定最大收益Rn可以通过切割棒并出售碎片来获得 请注意 如果价格Pn对于一根长度的杆n足够大 最佳解决方案可能根本不需要切割 考虑以下情况 n 4 图
  • 在地图元素上使用 for_each

    我有一个映射 我想在其中对每个数据类型对象成员函数执行调用 我还知道如何在任何序列上执行此操作 但是是否可以在关联容器上执行此操作 我能找到的最接近的答案是 Boost Bind 访问 std for each 中的 std map 元素
  • Python 中聚类相似字符串的算法?

    我正在编写一个脚本 该脚本当前包含多个 DNA 序列列表 每个列表都有不同数量的 DNA 序列 并且我需要根据汉明距离相似性对每个列表中的序列进行聚类 我当前的实现 目前非常粗糙 提取列表中的第一个序列并计算每个后续序列的汉明距离 如果它在
  • 什么是日历队列?

    我正在致力于构建一个离散事件模拟器 维基百科提到有几种通用优先级队列非常适合在 DES 中使用 具体来说 它提到日历队列是一个很好的结构 我找到了一份 pdf 1988 年的 其中提到了日历队列 但在大多数情况下我找不到关于它们的任何其他内
  • Lamport 的 Paxos 中的矛盾做了简单的论文

    阶段 2 a 如果提议者收到大多数接受者对其准备请求 编号为 n 的响应 则它向每个接受者发送一个接受请求 以获取编号为 n 且值为 v 的提案 其中 v 是响应中编号最高的提案的值 或者如果响应未报告任何提案 则为任意值 正如论文中提到的
  • 按顺时针顺序对四个点排序

    数组中的四个 2D 点 我需要按顺时针顺序对它们进行排序 我认为只需一次交换操作就可以完成 但我还没有能够正式放下这一点 编辑 在我的例子中 这四个点是凸多边形 编辑 这四个点是凸多边形的顶点 它们不必按顺序排列 如果你想从更数学的角度来看
  • 匈牙利算法 - 系统分配

    我正在一个项目中实现匈牙利算法 我设法让它工作 直到所谓的步骤 4维基百科 http en wikipedia org wiki Hungarian algorithm Matrix 5Finterpretation 我确实设法让计算机创建
  • com.jcraft.jsch.JSchException:算法协商失败

    我正在尝试从客户端计算机连接 sftp 服务器 但是 com jcraft jsch JSchException 算法协商失败 我收到这种错误 com jcraft jsch JSchException Algorithm negotiat
  • 递归分层父子

    我有一个来自数据库的项目集合 该数据库具有parentid值或空 这是我的班级设计 public class Item public int id get set public string Name get set public int
  • JavaScript 中多个数组的笛卡尔积

    如何在 JavaScript 中实现多个数组的笛卡尔积 举个例子 cartesian 1 2 10 20 100 200 300 应该返回 1 10 100 1 10 200 1 10 300 2 10 100 2 10 200 2020
  • 多线程归并排序,添加额外的线程

    我在java中的多线程合并排序算法中面临一个问题 我应该将代码修改为 3 4 5 6 7 8 线程合并排序 将原始数组划分为subArrays 目前它有2subArrays 如何将原始数组拆分为 3 4 5 6 7 8subArray是为了
  • LRU、FIFO、随机

    当出现页面错误或缓存未命中时 我们可以使用最近最少使用 LRU 先入先出 FIFO 或随机替换算法 我想知道 哪一个提供了最好的性能 也称为未来缓存丢失 页面错误最少的可能性 架构 Coldfire 处理器 没有愚蠢的问题 这句话非常适合这
  • 这些加密算法有什么区别?

    两者有什么区别MCRYPT RIJNDAEL 128 MCRYPT RIJNDAEL 256 MCRYPT BLOWFISH等等 哪一种最适合网络数据传输 Rijandel 是 AES 的另一个名称 AES 是当前的 一个好的标准 算法 数

随机推荐

  • 如何使用 Meteor 为 MongoDB 提供配置?

    The meteor命令都会启动 Meteor 和 MongoDB 我怎么有meteor启动 MongoDB 时执行与此命令等效的命令mongod profile 1 slowms 1 或者 meteor 使用的某个地方是否有 mongo
  • Symfony ChoiceType $choices - 标签和值交换

    交响乐2 8 2 根据 Symfony 文档 选择选项是一个数组 其中数组键是项目的标签 数组值是项目的值 http symfony com doc 2 8 reference forms types choice html choices
  • qsort 没有对字符串数组进行排序[重复]

    这个问题在这里已经有答案了 我尝试使用 qsort 对字符串数组进行排序 这是我的数组的内容 a orange apple mobile car 这就是我使用 qsort 的方式 int myCompare const void a con
  • 从命令行列出所有环境变量

    是否可以列出all来自 Windows 命令提示符的环境变量 相当于PowerShell的东西gci env or ls env or dir env Just do SET 你也可以做SET prefix查看名称以以下开头的所有变量pre
  • 使用导航菜单显示隐藏 html 代码/内容 [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我有一个按点击付费 PPC 登录页面 该页面的顶部有一个菜单 主页 服务 关于 我不想有另外两个页面用于服务 关于 我只想更改内容并替换所有内容 包括和之后的内容div class i
  • 矩阵上的垃圾、索引和唯一(如何保持矩阵格式)

    在 8x8 矩阵上使用此方法 gt gt junk index unique data first Capture the index ignore junk gt gt data sort index Index data with th
  • 为什么Java中的String.hashCode()有很多冲突? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 为什么 String ha
  • 无法加载文件或程序集或其依赖项之一。该系统找不到指定的文件。 (GAC 不允许)

    我有一个 主 程序 它使用反射动态加载我自己的 plugin dll 文件 plugin dll 文件通过使用 Visual Studio 引用来引用第三方 device dll 只要 device dll 和 plugin dll 与 M
  • jQuery - 从文本区域选择所有文本

    我怎样才能做到当您在文本区域内单击时 它的整个内容都会被选中 最终 当您再次单击时 取消选择它 为了防止用户在每次尝试使用鼠标移动插入符号时选择整个文本时感到恼火 您应该使用focus事件 而不是click事件 以下内容将完成这项工作并解决
  • Mongoose 和引用 UUID 数组不转换

    使用 mongoose uuid 库时 我可以为模式设置 UUID 类型 因此当我读取数据时 它采用字符串 utf 8 格式 而当我保存数据时 它采用 UUID ObjectID BSON 类型 4 格式 这对于我的架构中的顶级或平面直接值
  • 如何在C++中使用虚函数来实现多态行为?

    我对 C 的这些重要功能很陌生 我已经在这里阅读了有关这些主题的一些问题 答案 并用谷歌搜索了一些文档 但我仍然对此感到困惑 如果有人能给我建议一些好的在线教程或书籍章节 让我轻松而缓慢地理解这个概念 并从基础开始 那就太好了 另外 如果有
  • 使用不同类型的行反序列化 XML C#

    反序列化 XML 时遇到问题 无法理解如何制作财产data根据 xml 属性不同idxds 生成一个公共属性data结合了数据 UserInfo 数据 UserTransactions 的属性 尝试过解决方案this线程但没有运气 XML
  • jQuery:快速滚动 - 可能吗?

    我有一个带有固定标题的可滚动表格 是否可以在滚动条上进行 捕捉滚动 这意味着表格行不会逐像素滚动 而是捕捉响应其行高 以便更好地查看 答案是 是 您可以调整 scrollTop 并使其成为您想要的任何内容以响应 onscroll 事件 阅读
  • 对对象的所有引用

    Java中是否可以获取一个对象的所有引用 我需要检查的是对象是否已删除所有回调订阅 Thanks 这可以通过JVMTI通常由堆分析器完成 然而 它不能在 Java 内部完成
  • 在 C# 中取消/中止任务

    我有一个 C 程序 它执行一些服务调用 我需要在这个程序中添加一些代码 以便在单击按钮 winform 时能够停止这些服务调用 例如 如果调用时间太长并且用户感到无聊 困难在于我无法修改执行调用的代码块 为此 我计划使用 Unity 框架进
  • 递归查找当前目录下所有视图私有文件的命令

    递归查找当前目录中所有视图私有文件的clearcase命令是什么 常用的命令是基于cleartool ls ct lsprivate 但它仅适用于动态视图 不适用于快照视图 ct ls rec view only 至少 它在快照和动态视图中
  • 如何在tomcat 7中加密server.xml的密码

    我想消化 加密 tomcat 的 server xml 密码 我在互联网上看到了一些代码 这些代码导致我在资源标签内添加工厂 正如你在下面看到的 不幸的是 我已经在工厂中添加了 Atomikos 但不允许我添加第二个工厂 您能否帮助我使用第
  • 为什么后台服务运行时会停止?

    我的 Android 应用程序中有一个后台服务 其中有一个线程经常监听最近运行的任务 我的服务会覆盖这两个服务onCreate and onStartCommand 方法 当我尝试打开一些应用程序时 例如Gallery Camera等等 服
  • 如何将非流文件加入DStream?

    我想将 DStream 中的每个 RDD 与非流式 不变的参考文件连接起来 这是我的代码 val sparkConf new SparkConf setAppName LogCounter val ssc new StreamingCont
  • 使用插入排序有充分的理由吗?

    对于通用排序 答案似乎是否定的 因为快速排序 合并排序和堆排序在平均情况和最坏情况下往往表现更好 然而 插入排序似乎在增量排序方面表现出色 即在很长一段时间内一次向列表添加一个元素 同时保持列表排序 特别是如果插入排序是作为链表实现的 O