算法学习day3

参考资料《我的第一本算法书》

第2章 排序
(1)冒泡排序参考算法学习记录day1
在最糟糕的情况下,时间复杂度为O(n^2)

(2)选择排序参考算法学习记录day1
在最糟糕的情况下,时间复杂度为O(n^2)

(3)插入排序
①思路:从右侧的未排序区域内取出一个数据,然后把它插入到已排序区域内合适的位置上。最糟糕的情况下,时间复杂度为O(n^2)。
②如:随机给出一组数据要求从小到大排列,利用插入排序过程如下:从左边第二个数开始,与第一个数进行比较,若第二个数更小,则交换,否则,不变。再将第三个数取出比较,交换,以此类推,即可实现从小到大排序。

(4)堆排序
①与之前的数据结构——堆,类似参考算法学习day2,但这里是降序的。即最大的数位于最上面,取数的时候也是从最大值开始取。
②规则:父结点要大于子结点。
③整体来看,堆排序的时间复杂度为O(n㏒n),显然这要比冒泡、选择、插入排序的时间更短,但是堆相对要复杂些,难以实现。

(5)归并排序
①归并排序算法会把序列分成长度相同(或相差1)的两个子序列,当无法继续往下分时,就对子序列进行归并。归并指的是把两个排好序的子序列合并成一个有序序列,一直执行,直到全部归并。
②总的运行时间为O(n㏒n)。
③子序列在归并时,要按照从小到大进行调整。

(6)快速排序
①是一种“分治法”。将原本的问题分成两个子问题,然后再分别解决这两个问题。
②在解决子问题时会再次使用快速排序。这种在算法内部继续使用该算法的现象被称为“递归”。
③不特别强调最糟糕情况时,整体的时间复杂度为O(n㏒n)。
④即从给出的一组数中随机选择一个数作为参考,比这个参考小的就移到参考值的左边,大的就移到参考值的右边,继续在两边找参考值,比较、移动,可实现从小到大排序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值