1、概念解释
T(n)=O(n)
T(n):对于数组排序查找等问题来说,n代表数组个数,T(n)代表算法执行次数
O(n):算法执行次数,当n→∞,代表算法的渐进时间复杂度,简称时间复杂度
2、算法推理
2.1、例如二分查找:
二分查找大致是从一个有序数组中先寻找中间值与预期值比较,然后摒弃不符合条件的一边,再从剩下的数组中寻找中间值继续和预期值比较,直到匹配到,或者剩下最后两个值还没匹配到。那么这个算法执行次数大致可表示为:
T(n) = T(n/2) + 1(1代表查找次数)
T(n) = T(n/4) + 2
T(n) = T(n/8) + 3
……
T(n) = T(n/n) + log2n = T(1) + log2n = 1 + log2n
当n→∞时,1 + log2n → log2n
即T(n) = O(log2n)
2.2、例如快速排序:
快速排序大致是先选定数组的一个坐标值,遍历一遍数组,小于该值的数据放在左边(记为小子数组),大于等于的放在右边(记为大子数组),小子数组再选择一个坐标值重复之前的操作,大子数组再选择一个坐标值重复之前的操作,直至最后坐标值两边的子数组剩下一个或两个值,完成排序。那么这个算法执行次数大致可表示为:
T(n) = 2T(n/2) + n(n代表比较次数)
T(n) = 4T(n/4) + 2n
T(n) = 8T(n/8) + 3n
……
T(n) = nT(n/n) + log2n * n = nT(1) + nlog2n = n + nlog2n
当n→∞时,n + nlog2n → nlon2n
即T(n) = O(nlog2n)