https://pic2.zhimg.com/80/v2-8c710914a7d092296dd4c2eadb525dcd_hd.jpg
public static boolean useArraysBinarySearch(String[] arr, String targetValue) {
int a = Arrays.binarySearch(arr, targetValue);
if(a > 0)
return true;
else
return false;
}
- 同下
- 存在性能问题
- 1.7做了优化
-
常数阶
O(1)
k次方阶O(n^k),指数阶O(2^n)
-
线性阶
O(n)
for(int i = 0; i < n; i++){ printf("%d ",i); }
-
平方阶
O(n^2)
for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ printf("%d ",i); } } //运行次数为(1+n)*n/2 //时间复杂度O(n^2)
-
对数阶
O(log2n)
int i = 1, n = 100; while(i < n){ i = i * 2; } //设执行次数为x. 2^x = n 即x = log2n //时间复杂度O(log2n)
-
线性对数阶
O(nlog2n)
-
立方阶
O(n^3)
-
k次方阶
O(n^k)
-
指数阶
O(2^n)
-
常用排序算法的时间复杂度
最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 快速排序 O(n2) O(n*log2n) 不稳定 O(log2n)~O(n) 选择排序 O(n2) O(n2) 稳定 O(1) 二叉树排序 O(n2) O(n*log2n) 不稳定 O(n) 插入排序 O(n2) O(n2) 稳定 O(1) 堆排序 O(n*log2n) O(n*log2n) 不稳定 O(1) 希尔排序 O O 不稳定 O(1)
-
ArrayList vs LinkedList
| Arraylist | LinkedList ------------------------------------------ get(index) | O(1) | O(n) add(E) | O(n) | O(1) add(E, index) | O(n) | O(n) remove(index) | O(n) | O(n) Iterator.remove() | O(n) | O(1) Iterator.add(E) | O(n) | O(1)