如何申请Apple ID(ipad如何申请apple ID) 南阳中招分数线2020(南阳中招分数线) photoshop CS4教程(photoshop cs4教程下载) 怎么用手机下载电子书(怎么用手机下载电子书到mp4) 书法毛毡是什么(毛毡在书法中的用途是什么) 手机QQ 密码输入框 不能复制粘贴解决办法(qq密码复制粘贴不了怎么回事) 微信拍一拍在哪里(微信拍一拍在哪里发送) 三鼠是什么意思(三叫鼠是什么) 粉红女郎马卡龙的做法(马卡龙粉红色背景图片) 王者荣耀雅典娜技能被动介绍(王者荣耀雅典娜的被动) 一年级下册语文期末考试试卷2023(一年级下册语文) Realtek声卡没声音的解决办法(声卡没有realtek) lols7寡妇制造者伊芙琳打野双修爆炸出装 晏子使楚翻译和原文(晏子使楚翻译) 股指期货入门:期指贴水是什么意思(股指期货入门:期指贴水是什么意思呀) 自我反思怎么写学生(自我反思怎么写) 怎么在百度发布信息 百度怎么发动态(百度怎样发布消息) 加勒比海盗小提琴曲(双城变奏中的小提琴曲) 排球的场地如何安排及尺寸大小(排球比赛场地尺寸大小) 手机壳贴钻还能这样DIY 你不知道吧(怎样贴手机壳的钻才能更牢固) 余弦函数公式大全表格(余弦函数公式) 如何解决使用打印机突然提示“尚未安装打印机”(尚未安装打印机怎么回事) 梦幻西游三维版怎么联系在线客服(梦幻西游三维版客服电话人工服务电话) 销售原材料结转成本的会计分录(销售原材料会计分录) 手机如何查询东莞住房公积金?(手机如何查询东莞住房公积金贷款额度) 呆萌宠物对对碰攻略(萌宠对决攻略) 工程招标代理资质取消通知(工程招标代理资质) 法定节假日加班工资怎么算(法定节假加班工资怎么计算) 驾照理论考试技巧和方法(驾照理论考试技巧和方法口诀) 黄花菜不能和什么食物同吃(黄花菜不能和什么食物一起吃) HTC G12刷recovery教程及进入recovery方法(htc如何进入recovery) b血型的人有什么特点男(b血型的人有什么特点) Sai软件手绘简笔画绿色环保机器人(SAI画画软件) Their是什么意思中文翻译怎么读(their是什么意思) 网上赚钱创业方法大全(网上赚钱创业方法大全套) 走路赚钱的几种方式(走路赚钱的几种方式是什么) 红龙鱼饲养方法(红龙草) 怎样增强抵抗力(怎样增强抵抗力和免疫力) qb怎么转给别人(怎么把qb给别人) 不是花中偏爱菊此花开尽更无花全诗拼音(不是花中偏爱菊此花开尽更无花全诗) 微信新功能"拍一拍"上线!(微信新功能朋友圈折叠) 现场仪表HART通讯如何接线(hart怎么接线) peacewarfound的英语怎么读(peace war find怎么读) q版泡泡堂6怎么换人(q版泡泡堂可以三人吗) 如何获得更多渠道商及他们的支持(如何获得更多渠道商及他们的支持英语) 作文那一次我失败了(作文那一次我真高兴) 围巾情人扣的织法(围巾情人扣的织法粗线) 悬崖上的金鱼公主国语版樱花动漫(悬崖上的金鱼公主国语版高清) 智能电视怎么看地方台频道直播 教你方法(智能电视怎么看地方台的频道) 初二英语周报所有答案大全(初二英语周报答案网)
您的位置:首页 >综合精选 >

链表插入排序(插入排序思路)

导读 关于链表插入排序,插入排序思路这个问题很多朋友还不知道,今天小六来为大家解答以上的问题,现在让我们一起来看看吧!1、转个过来插入排

关于链表插入排序,插入排序思路这个问题很多朋友还不知道,今天小六来为大家解答以上的问题,现在让我们一起来看看吧!

1、转个过来插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。

2、      本节介绍两种插入排序方法:直接插入排序和希尔排序。

3、 直接插入排序基本思想基本思想      假设待排序的记录存放在数组R[1..n]中。

4、初始时,R[1]自成1个有序区,无序区为R[2..n]。

5、从i=2起直至i=n为止,依次将R[i]插入当前的有序区R[1..i-1]中,生成含n个记录的有序区。

6、2、第i-1趟直接插入排序:      通常将一个记录R[i](i=2,3,…,n-1)插入到当前的有序区,使得插入后仍保证该区间里的记录是按关键字有序的操作称第i-1趟直接插入排序。

7、      排序过程的某一中间时刻,R被划分成两个子区间R[1..i-1](已排好序的有序区)和R[i..n](当前未排序的部分,可称无序区)。

8、      直接插入排序的基本操作是将当前无序区的第1个记录R[i]插人到有序区R[1..i-1]中适当的位置上,使R[1..i]变为新的有序区。

9、因为这种方法每次使有序区增加1个记录,通常称增量法。

10、      插入排序与打扑克时整理手上的牌非常类似。

11、摸来的第1张牌无须整理,此后每次从桌上的牌(无序区)中摸最上面的1张并插入左手的牌(有序区)中正确的位置上。

12、为了找到这个正确的位置,须自左向右(或自右向左)将摸来的牌与左手中已有的牌逐一比较。

13、一趟直接插入排序方法1.简单方法      首先在当前有序区R[1..i-1]中查找R[i]的正确插入位置k(1≤k≤i-1);然后将R[k..i-1]中的记录均后移一个位置,腾出k位置上的空间插入R[i]。

14、  注意:      若R[i]的关键字大于等于R[1..i-1]中所有记录的关键字,则R[i]就是插入原位置。

15、2.改进的方法  一种查找比较操作和记录移动操作交替地进行的方法。

16、具体做法:      将待插入记录R[i]的关键字从右向左依次与有序区中记录R[j](j=i-1,i-2,…,1)的关键字进行比较:      ① 若R[j]的关键字大于R[i]的关键字,则将R[j]后移一个位置;       ②若R[j]的关键字小于或等于R[i]的关键字,则查找过程结束,j+1即为R[i]的插入位置。

17、      关键字比R[i]的关键字大的记录均已后移,所以j+1的位置已经腾空,只要将R[i]直接插入此位置即可完成一趟直接插入排序。

18、直接插入排序算法1.算法描述   void lnsertSort(SeqList R)    { //对顺序表R中的记录R[1..n]按递增序进行插入排序     int i,j;     for(i=2;i<=n;i++) //依次插入R[2],…,R[n]       if(R[i].key

19、      哨兵有两个作用:  ① 进人查找(插入位置)循环之前,它保存了R[i]的副本,使不致于因记录后移而丢失R[i]的内容;  ② 它的主要作用是:在查找循环中"监视"下标变量j是否越界。

20、一旦越界(即j=0),因为R[0].key和自己比较,循环判定条件不成立使得查找循环结束,从而避免了在该循环内的每一次均要检测j是否越界(即省略了循环判定条件"j>=1")。

21、  注意:    ① 实际上,一切为简化边界条件而引入的附加结点(元素)均可称为哨兵。

22、     【例】单链表中的头结点实际上是一个哨兵  ② 引入哨兵后使得测试查找循环条件的时间大约减少了一半,所以对于记录数较大的文件节约的时间就相当可观。

23、对于类似于排序这样使用频率非常高的算法,要尽可能地减少其运行时间。

24、所以不能把上述算法中的哨兵视为雕虫小技,而应该深刻理解并掌握这种技巧。

25、给定输入实例的排序过程      设待排序的文件有8个记录,其关键字分别为:49,38,65,97,76,13,27,49。

26、为了区别两个相同的关键字49,后一个49的下方加了一下划线以示区别。

27、其排序过程见【动画模拟演示】算法分析1.算法的时间性能分析       对于具有n个记录的文件,要进行n-1趟排序。

28、     各种状态下的时间复杂度:┌─────────┬─────┬──────┬──────┐│ 初始文件状态      │    正序    │      反序    │无序(平均)   │├─────────┼─────┼──────┼──────┤│ 第i趟的关键       │    1       │      i+1     │ (i-2)/2   ││ 字比较次数        │           │             │             │├─────────┼─────┼──────┼──────┤│总关键字比较次数   │    n-1     │(n+2)(n-1)/2│ ≈n2/4      │├─────────┼─────┼──────┼──────┤│第i趟记录移动次数 │    0       │ i+2         │ (i-2)/2   │├─────────┼─────┼──────┼──────┤│总的记录移动次数   │    0       │(n-1)(n+4)/2│ ≈n2/4      │├─────────┼─────┼──────┼──────┤│时间复杂度         │   0(n)   │ O(n2)     │ O(n2)     │└─────────┴─────┴──────┴──────┘注意:      初始文件按关键字递增有序,简称"正序"。

29、      初始文件按关键字递减有序,简称"反序"。

30、 2.算法的空间复杂度分析      算法所需的辅助空间是一个监视哨,辅助空间复杂度S(n)=O(1)。

31、是一个就地排序。

32、3.直接插入排序的稳定性      直接插入排序是稳定的排序方法。

本文分享完毕,希望对大家有所帮助。

标签:

免责声明:本文由用户上传,如有侵权请联系删除!

最新文章