快排和归并时间复杂度为何是O(nlogn)

  快排是从所给的要排序的数中先随机抽出一个数(一般选择第一个数作为基数)。然后遍历输入的数(将每个数和抽出的数比较,比它小的放左边,比大它的放右边)~~~该过程的时间复杂度为n(第一步),然后递归的完成上述操作~~该递归的操作时间复杂度是logn(与遍历二叉树的操作类似)(第二步)~~~所以第一步和第二步合起来。最终快排的时间复杂度是nlogn(它是不稳定算法)

   归并排序:从递归的角度来分析的话:第一步:遍历所有的数,两两比较进行排序,这就完成了一趟操作。它的时间复杂度为n..

                                                                        第二步:递归完成上述操作~~它的时间复杂度为logn~~~~~~~~~所以总的就是nlogn它是稳定的算法

                       从非递归的角度:合并每个子问题,得到原问题的解。它的时间复杂度是n(外层循环)~~~~~每个子问题求解需要logn的时间复杂度(内层循环).........所以最终它的时间复杂度还是nlogn

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值