算法执行的时间和算法中的语句执行的次数成正比例,算法中语句的执行次数的频度称为语句频度或时间频度,记为T(n),n为问题的规模。若某个辅助函数f(n)使得当n趋近于无穷大时T(n)/f(n)为一个不等于0的常数,则称f(n)为T(n)的同数量级函数,记作T(n)=O(f(n)), 称O(f(n))为算法的渐进时间复杂度,简称为时间复杂度。
算法中如果语句执行次数为一个常数,则时间复杂度为O(1)。时间频度不同,而时间复杂度有可能相同,如T(n) = n^2 + 2n + 1 和 T(n) = 3n^2 + 4, 它们的时间复杂度都为O(n^2)。常见的时间复杂度有:常数阶O(1), 对数阶O(log2n),线性阶O(n),平方阶O(n^2),k次方阶O(n^k).... 指数阶O(2^n)。
冒泡排序的时间复杂度为O(n^2),
public static void bubbleSort(List list) {
if (list == null || list.size() ==0 || list.size() == 1) {
return;
}
int size = list.size();
int temp = -1;
for (int i = 0; i < size -1; i ++) {
for(int j = 0; j < size - i - i; j ++) {
if (list.get(j) > list.get(j + 1) {
temp = list.get(i);
list.set(i, list.get(j));
list.set(j, temp);
}
}
}
}
阅读(232) | 评论(0) | 转发(0) |