数据结构常用算法学习二

堆排序算法

将要排序的元素按照一定的方法排列成一个堆,从小到大的顺序的话,则最小值为根节点,子节点总比根节点要小。调整节点的时候,初次调整应该从叶子结点开始往根节点调整,经过一次筛选后,形成小根堆,然后输出根节点即为最小值,然后将根节点与最后一个结点交换,再将总的节点数减一(相当于抛弃掉已输出的结点),此时左右子树依旧满足堆的条件,此时只需要从根节点开始进行调整即可,堆排序算法是一种不稳定的算法
最好情况:O(nlogn)
最坏:O(nlogn)
平均:O(nlogn)

Shell排序(希尔排序)

相当于插入排序的进阶版。插入排序在数列小且比较有序的情况下会更有效率,基于这个原则,希尔排序即是把一个待排序的数组,按照一定的步长分为多组,然后分组进行插入排序,然后步长减半,再次进行插入排序,直到步长为一,对整体进行插入排序。这样的话,每次进行插入排序的数组就会很小,且随着步长的减小,整个数组的有序程度又会增加,所以相当于改进的插入排序。Shell排序是一种不稳定的排序算法
最好情况:O(n)
最坏:O(n^2)
平均:不确定

归并算法

采用一种分治的思想,先把一个大的序列进行分组,n个元素分成n组,然后再两两归并,变成n/2组,依次类推,一直到归并成两组(这个过程叫做一趟归并),最后再两组合成一组,完成排序。归并算法是一种稳定的排序算法。
具体归并过程和归并中途排序算法见以下链接,感觉非常详细啊https://blog.csdn.net/k_koris/article/details/80508543
最好情况:O(nlogn)
最坏:O(nlogn)
平均:O(nlogn)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值