摘要:
我在许多书本上看到冒泡排序的最佳时间复杂度是O(n),即是在序列本来就是正序的情况下。但我一直不明白这是怎么算出来的,因此通过阅读《算法导论-第2版》的2.2节,使用对插入排序最佳时间复杂度推算的方法,来计算冒泡排序的复杂度。1. 《算法导论》2.2中对插入排序最佳时间复杂度的推算 在最好情况下,6和7总不被执行,5每次只被执行1次。因此, 时间复杂度为O(n)2. 冒泡排序的时间复杂度 2.1 排序代码public void bubbleSort(int arr[]) { for(int i = 0, len = arr.length; i < len - 1; i++) {... 阅读全文
摘要:
主方法(master method)给出求解以下形式递归式的“食谱”方法主定理:T[n] = aT[n/b] + f(n)其中a>=1 and b>1是常量,并且f(n)是一个渐进正函数考虑以下三种情况:1. 如果f(n)=O(n^(logb(a) - E))对于某个常量E>0成立,那么T[n]=O(n^(logb(a)))2. 如果f(n)=O(n^(logb(a))),则T[n]=O(n^(logb(a)) ^ logn)3.如果f(n)=O(n^(logb(a) + E))对于某个常量E>0成立,且对常数c<1有足够大的n,有af(n/b)<=cf(n 阅读全文