1. 算法简介:算法就是一组完成任务的指令。
2.二分查找 :
解决问题 :用来查找特定元素。
- 条件:有序的数据结构(有序数组)
- 思想 :
- 分治策略
- 将数组分成两半,找到中间值
- 与特定的元素比较
- 大于特定元素
- 查找右边部
- 小于的特定元素
- 查找左半部
- 大于特定元素
- 时间复杂度 :每次比原来小一半
l o g n logn logn
代码示例:
public int binarySearch(int[] array,int number){
//定义连个指针,分别指向头和尾
int low = 0;
int high = array.length-1;
//中间值,下标
int min;
//如果 头 小于等于 尾 就执行二分操作;
while (low <= high){
//进行二分 ,向下取整
min = (low + high) >>> 1;
//小于特定值
if (array[min] < number){
//头变,尾不变
low = min +1;
continue;
}
//大于特定值
if (number < array[min]){
//尾变,头不变
high = min-1;
continue;
}
//找到返回下标
if (array[min] == number) return min;
}
//找不到返回 -1
return -1;
}
3. 大O表示法
- 简介: 大O表示法指出了算法有多块。
- 指出最糟糕情况下的运行时间。
4. 常见的大O运行时间
- O(log n):对数时间
- O(n):线性时间
- O(n * logn)
- O(n^2)
- O(n!)
5. 概念
- 算法运行时间不是以秒为单位的
- 算法行时间是从增速的角度度量的
- 算法行时间大O示法示