数组 查找算法
线性查找
就是用像查找的数一个个对比数组的数,成功返回下标,失败返回-1 ,因为数组下标没有-1
public static int flow(int[] a,int ele){
for (int i = 0; i <a.length ; i++) {
if (a[i]==ele){
return i;
}
}
return -1;
}
二分法查找 优化 二分法找不到
必要条件是数组内数字有序,如{1,2,3,4,5,6,7,8,9,10},运用面小
public static int towFlow(int[] a,int ele){
int start = a[0];
int end = a[a.length-1];
int mid = (start + end ) /2 ; // /号代表取商,舍去余数
for (int i = 0; i <a.length ; i++) {
if (ele>a[mid]){
start=mid+1;
}
if (ele<a[mid]){
end=mid-1;
}
if (ele==a[mid]){
return mid;
}
mid = (start + end ) /2 ;
}
return -1;
}
main 方法内容
public static void main(String[] args) {
int[] a={1,2,3,4,5,6,7,8,9,10};
System.out.println(flow(a, 9));
System.out.println(towFlow(a,0));
}
栈
栈的示意图 ,先进后出 ,只能去除顶上的元素
数组存储模拟,完成以下操作压入元素,取出栈顶元素,操作基本和数组一样不做代码演示
队列
队列的示意图, 先进去,先处理,就是先出来
代码和 数组相同 就是 弹出的是第一个元素