大欧表示法
常数阶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;}}// 如果没有找到目标元素,返回-1return -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);}}}