quicksort/mergesort

实现思路

quicksort: 选定一个pivot, 根据pivot大小各方一边;然后进行迭代,把每一边用同样的方式变为有序的。

mergesort: 切一半,左边和右边同时迭代mergesort, 最后再用merge operation将两边合并。

算法分析比较

  • quicksort平均起来更快,但worst case中每一个pivot都可会选到最差的,从而变成O(n^2) complexity;平均来说两个算法的复杂度都是O(nlogn)
  • mergesort中每一个sort好的小块儿要单独储存,从而造成O(n)的memory开销;quicksort可以sort in place。
  • 上面的一点也解释了为什么mergesort在现代软件上较慢:现代软件random access的速度很快,开销也很小而mergesort其实没有利用这点,没个merge operation都重建了一个list/array。所以如果没有random access这个特性 (linked list) 或者通常来说slow to access sequential media,merge sort会是最好的选择。顺便提一下,在linked list的情况下,merge sort的额外内存开销是O(1)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值