首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >插入排序理论分析,移位总数。

插入排序理论分析,移位总数。
EN

Stack Overflow用户
提问于 2017-08-18 09:13:19
回答 1查看 164关注 0票数 0

给定以下数组:

代码语言:javascript
运行
AI代码解释
复制
[14 17 21 34 47 19 71 22 29 41 8]

以下摘录自Thomas Cormen解锁的“算法”(略作编辑,开始和停止标志不在文本中):

当数组开头为“几乎排序”时,插入排序是一个很好的选择。START假设每个数组元素从它在排序数组中结束的位置的k个位置开始。那么,给定元素在内循环的所有迭代中移动的总次数最多是k。因此,所有元素在所有内环迭代中移动的总次数最多为kn,这反过来又告诉我们,内环迭代的总次数最多为kn (如果k是常数,则每个内环迭代正好将一个元素移动一个position).STOP,那么插入排序的总运行时间将仅为Θ(n),因为Θ-表示法包含常数因子k。事实上,只要没有太多这样的元素,我们甚至可以容忍一些元素在数组中长距离移动。特别是,如果L元素可以在数组中的任何位置移动(这样,这些元素中的每个元素最多可以移动n-1位置),而其余的n-L元素最多只能移动k个位置,那么如果k和L都是常数,则的移位总数最多为* (n - 1) + (n - L) *k= (k + L) *n- (k + 1) * L,即Θ(n)。

这些书试图解释它是如何制作一个公式,它呈现在课文的底部。我想要一些帮助,以更好地理解它说了什么,很可能,它可以帮助一个特定的例子使用上面的示例数组,以便对k和n变量发生什么作用。你能帮我更好地理解以上摘录的分析吗?

更确切地说,让我感到困惑的是,开始标志和停止标志之间的行,这些是行:

假设每个数组元素.这反过来告诉我们,内环迭代的总次数最多是kn(因为每个内环迭代都会将一个元素逐个位置移动)。

(这些线下的任何东西都是完全理解的,一直到最后。)

EN

回答 1

Stack Overflow用户

发布于 2017-08-18 23:45:51

让我们考虑插入排序算法。

算法: InsertionSort(A)

代码语言:javascript
运行
AI代码解释
复制
i ← 1
while i < length(A)
    j ← i
    while j > 0 and A[j-1] > A[j]
        swap A[j] and A[j-1]
        j ← j - 1
    end while
    i ← i + 1
end while

A0.I-1的内环-移动元素,直到Ai处于正确的位置。因此,如果给定的元素在距其正确位置的k个位置上,我们将有一个最大的k比较和交换。对于n个元素,它将是k*n。

希望能帮上忙!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45761780

复制
相关文章
如何使NSLog只在Debug模式下有效
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/50757136
用户1451823
2018/09/13
7690
【Groovy】编译时元编程 ( 编译时方法拦截 | 在 MyASTTransformation#visit 方法中找到要拦截的方法 )
方法中 , 其中 ASTNode[] nodes 参数是 AST 语法树根节点数组 , 每个数组元素都是一个 ModuleNode 对应一个 Groovy 脚本 ;
韩曙亮
2023/03/30
3170
在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
  今天在使用Tomcat8部署完成项目做测试的时候,发现有的接口会报错400,后端提示在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
彼岸舞
2020/11/05
14.4K6
在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
大牧絮叨设计模式:工厂方法模式
工厂方法模式是一种创建模式,又被称为虚拟构造子模式(Virtual Constructor)或者多态性工厂模式(Polymoriphoic Factory)。工厂方法模式是目标是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。
大牧莫邪
2019/07/16
4070
大牧絮叨设计模式:工厂方法模式
某种矿机的预防脚本
iptables -I OUTPUT -p tcp -m multiport --dport 80,443 -m string --string "tor2web.io" --algo bm -j DROP
用户1168904
2021/05/17
7490
文本的词嵌入是什么?
词嵌入(Word embeddings)是一种单词的表示形式,它允许意义相似的单词具有类似的表示形式。
StoneDemo
2018/02/11
4.3K0
文本的词嵌入是什么?
RedHat Linux文本模式下乱码解决方法
如果在安装RedHat Linux时选择中文未缺省语言,在文本模式下会出现乱码情况,对于在CLI(command-line interface,命令行界面)方式下调试程序时诸多不便,因为出错信息全是乱码,下面说明乱码问题如何解决:
用户8710643
2021/06/11
2K0
使用 Python 拆分文本文件的最快方法是什么?
在 Python 中拆分文本文件可以通过多种方式完成,具体取决于文件的大小和所需的输出格式。在本文中,我们将讨论使用 Python 拆分文本文件的最快方法,同时考虑代码的性能和可读性。
很酷的站长
2023/02/18
2.6K0
使用 Python 拆分文本文件的最快方法是什么?
文本在计算机中的表示方法总结
本文为 AI 研习社社区用户 @Dendi 独家投稿内容,欢迎扫描底部社区名片访问 @Dendi 的主页,查看更多内容。
AI研习社
2019/10/29
3.1K0
文本在计算机中的表示方法总结
IE的浏览器模式、文本模式
IE的浏览器模式,用于切换IE针对该网页的默认文本模式、对不同版本浏览器的条件注释解析、决定请求头里userAgent的值。它在浏览器发出请求之前就已经确定,网站没有办法修改这个值。它代表的是用户以何种浏览器访问网站。
菜的黑人牙膏
2019/01/21
1.3K0
flutter - 方法 '[]'在null上被调用,但在inApp中有效
这意味着检索数据需要很短的时间, 试试这个。数据为空时,它将在短时间内通过进度指示器
徐建国
2021/08/03
9840
如何学习 React - 有效的方法
React 是一个免费的开源前端 JavaScript 库,用于通过将您的应用程序划分为更小的组件来构建复杂的用户界面。它由 Facebook 和开发者社区维护。
玖柒的小窝
2021/09/14
5.4K0
但是,在通过移动数组的上升周期中找到指定元素
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117323.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/06
3970
设计模式(1)—什么是设计模式?设计模式的六大原则是什么?
软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。设计模式使代码开发真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。只有夯实地基搭好结构,才能盖好坚壮的大楼。也是我们迈向高级开发人员必经的一步。即12字真言:设计模式是设计经验的总结
AlbertYang
2020/09/08
6040
影响FMEA有效应用的因素是什么?
在制造业和工业生产中,FMEA(潜在失效模式及后果分析)是一种常见的质量管理工具,用于识别和预防潜在的故障和缺陷。但是,想要有效的应用FMEA并非易事,这其中需要考虑多种因素,下面我们来详细了解一下。
用户9972271
2023/04/18
3290
野生码农的逆袭之路:在跨界中找到自我
本文由CDA作者库成员HarryZhu原创,并授权发布。 CDA作者库凝聚原创力量,只做更有价值的分享。 Day Job and Night Job 我非常认同《黑客与画家》里的 Paul Graham 说的一句话:码农需要一个 day job for food,也需要一个 night job for fun。和格雷厄姆不同的是,我的night job不是一个画家,而是一个作家,是的,一个技术专栏的撰稿人。通常,晚餐之后,刷一遍自己的 Feedly 和 GitHub,搞搞黑科技,这就是一种
CDA数据分析师
2018/02/24
1.2K0
野生码农的逆袭之路:在跨界中找到自我
浅谈在ASP.NET中数据有效性校验的方法
作为一名程序员,一定要对自己编写的程序的健壮性负责,因此数据的校验无论在商业逻辑还是系统实现都是必不可少的部分。
Java架构师必看
2021/03/22
9700
在Kubernetes有效使用CoreDNS
作者:InfraCloud 技术领导、开源贡献者 Sanket Sudake。客座文章最初在InfraCloud 的博客[1]上发表。
CNCF
2021/07/07
9220
在Dubbo中,模板方法模式 用的真6!
Dubbo 是阿里的开源框架,后面捐献给了Apache,所以现在都叫Apache Dubbo,但是在日常中,很多人也更喜欢简称Dubbo。Apache Dubbo 是一款微服务框架,为大规模微服务实践提供高性能 RPC 通信、流量治理、可观测性等解决方案, 涵盖 Java、Golang 等多种语言 SDK 实现。
田维常
2022/11/25
6210
在Dubbo中,模板方法模式 用的真6!
[Oracle] 导出到文本的方法
Oracle 将查询结果导出到文本的方法。 Oracle 表在直接导出时,格式容易很混乱,不易读,比如下面这样: 为了使导出的文本可读性强,可以增加以下参数: set line 1000
tonglei0429
2021/09/08
6840

相似问题

在集合中查找最不同的元素

20

获取MySQL中最不同的记录

20

需要帮助计算最不同的书籍

13

根据不同的列选择最不同的产品

10

选择产品中最不同的项目

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档