时间复杂度
概念:算法中的基本操作的执行次数
常见复杂度:
- O(1)
- O(log(n)) 二分查找
- O(n) 阶乘递归函数,遍历查找
- O(n*log(n))
- O(n^2) 部分嵌套循环,冒泡排序
- O(2^n) 斐波那契递归
/**
* 遍历查找O(n)
* 基本思想:将整个数组从头开始遍历,匹配要查找的元素
*/
private static int search(int[] array, int v) {
for (int i = 0; i < array.length; i++) {
if (v == array[i]) {
return i;
}
}
return -1;
}
/**
* 冒泡排序:时间复杂度O(n^2)
* 基本思想:如果一次交换都不做,证明是有序的数组
* 每次冒泡前,都假设有序: boolean sorted = true;
* 每一次冒泡过程,都要保证最大的数能被循环置换到最后
* 经过一次冒泡过程,如果此过程中一次交换都没发生过,假设有序就成立
* if(sorted == true){break};
*/
private static void bubbleSo