大欧表示法
常数阶O(1)
HashMap 和 数据库主键查询
对数阶O(logN)
/**
* 使用二分查找算法在有序数组中查找指定元素的索引
*
* @param nums 一个已按升序排列的整数数组
* @param target 要查找的目标整数
* @return 如果目标整数存在于数组中,则返回其索引;否则返回-1
*/
public static int binarySearch(int[] nums, int target) {
// 初始化左指针为数组的起始位置
int left = 0;
// 初始化右指针为数组的结束位置
int right = nums.length - 1;
// 当左指针小于等于右指针时,执行二分查找
while (left <= right) {
// 计算中间位置的索引,避免大数溢出
int mid = left + (right - left) / 2;
// 如果中间位置的元素等于目标元素,返回中间位置的索引
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
// 如果中间位置的元素小于目标元素,将左指针更新为中间位置的右侧
left = mid + 1;
} else {
// 如果中间位置的元素大于目标元素,将右指针更新为中间位置的左侧
right = mid - 1;
}
}
// 如果没有找到目标元素,返回-1
return -1;
}
线性阶O(N)
public void circle(int n) {
for (int i = 0; i < n; i++) {
System.out.println(i);
}
}
线性对数阶O(nlogN)
/**
* 将一个复杂度为O(logN)的代码重复执行n次, 时间复杂度是O(NlogN)
* @param n
*/
public void logarithm(int n) {
int count = 1;
for (int i = 0; i < n; i++) {
while (count < n) {
count *= 2;
}
}
}
平方阶O(n2)
public void square(int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.println(i + j);
}
}
}
![](https://i-blog.csdnimg.cn/direct/569bd7a7e16e469597dac63e0be7d12e.png)
![](https://i-blog.csdnimg.cn/direct/f7d1fd50a6b141f7af6d731d9992d2a2.png)