分治法:
a^n计算的时间复杂度O(logn)
斐波那契数列Fn的时间复杂度O(logn):
快速排序算法:
1:分为两个n/2子问题的情况:T(n)=2*T(n/2)+n O(nlogn)
2:分为一个1/10,一个9/10的情况:T(n)=T(1n/10)+T(9n/10)+n.
3:分为1和n-1:T(n)=T(n-1)+n
找最大值和最小值:两两分组比较,再依次比较
找第二大的值:锦标赛法
W(n)=n-1+n-2=2n-3
锦标赛法:两两分组,选出最大的元素进入下一轮,下一轮中两两分组选出最大的值,直到产生冠军。比较(n-1)次。
又因为第二大元素必是被冠军淘汰,所以在比较的同时需记录被其淘汰的元素。在被冠军淘汰的元素中选出最大值,即第二大元素。
找第k大的元素:选择算法Select,时间复杂度O(n)
或者快速选择算法【O(n)】