408考研之数据结构的排序——插入排序和希尔排序

文章介绍了插入排序的基本思想,包括直接插入排序和折半插入排序,强调了折半插入排序在比较次数上的优化但未改变时间复杂度。接着重点讲述了希尔排序的概念,通过增量d逐步减少实现部分有序到总体有序,指出希尔排序在效率上优于直接插入排序,但不具备稳定性。
摘要由CSDN通过智能技术生成

TIPS:插入排序分为直接插入排序和希尔排序,其中最重要的就是希尔排序;最好能够手动模拟出希尔排序的执行过程,并掌握希尔排序手动模拟过程及其性质(如稳定性等)。

插入排序,算法思想:

    每次将待排序的记录按其关键字大小插入到前面已经排好序的子序列中,直到全部记录插入完成;插入排序中,可继续分为:直接插入排序和折半插入排序和希尔排序。

    比起直接插入排序,折半插入排序是对前面已经好顺序的序列进行关键字的比较所进行的优化;一般情况下,通过折半查找方式,关键字的比较次数       变少了,但是移动元素的次数没变,整体时间上看,时间复杂度依然是O(n2)。

TIPS:折半插入排序中,当low>high时(low=high+1),将low之后到子序列结束的所有元素右移,并将当前要插入的元素放入low所指位置;且当要插入的值等于当前所指元素时,应继续令low=high+1,来保证稳定性。

总结:插入排序的平均时间复杂度O(N^2;空间复杂度为O(1);且算法是稳定的。

希尔排序——shell sort,算法思想:

    通过设置一个逐渐减小的d值,将表按照d值分割,对各个子表进行直插排序,然后逐渐缩小增量d,直到d=0位置,效果形同:通过部分有序,逼近总体有序。 

总结:希尔排序的空间复杂度为O(1),时间复杂度一般不讨论,但优于直插排序;希尔排序是不稳定的; 希尔排序仅适用于顺序表,不适用于链表;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值