算法导论

插入排序

算法:从第二个开始,按照顺序查到到之前的正确位置。不需要额外的内存空间。
时间复杂度:一次n长度的插入操作要比较n次,所以为n。总和O(n2)O(n^2)O(n2)。(1+2+3+4+5+67+8+9…)

归并排序

算法:将数组不断二分,将小的每部分排好序之后,再进行归并。需要额外的内存空间。
时间复杂度:一次长度为n的归并操作为n。化成树形结构后共有logn层深(每层2分),每层加起来有n操作,总和O(nlogn)O(nlogn)O(nlogn)
(当n大于30时,归并就比插入要快了)

递归树

当问题展开为a部分,每部分规模为b/n的问题,logablog_a^blogab,最后等价于O(logn)

分治法

典例:归并排序、二分法、计算x的n次方、斐波那契数列、快速排序

快速排序

随机选定一个数,将剩下的数据与其进行比较,得到小于数的一部分和大于数的一部分。之后使用递归完成。不需要额外的内存空间,复杂度O(nlogn)O(nlog_n)O(nlogn)。不适用于对于几乎要排好的数据,此时的复杂度和插入排序一样。

随机化快速排序

在挑选主元是随机挑选,这样不受输入数组的影响。受随机的影响而与输入无关。没有一种最差的输入会引起最差的运行效率。在算法优化的情况下要比归并排序快三倍左右,而且占用内存空间小。

计数排序

如果能确定数的范围{0,k},没出现一个数记一次次数,复杂度为O(n+k)O(n+k)O(n+k),k小的时候计算很快

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值