这两种查找方法是:顺序查找法,二分法查找
顺序查找法:
思想:简单地说就是那那个要找的数挨个与数组中的数比较
代码:
/**
* 顺序查找类
*/
class SequnceSearch{
private int i = 0;
public void search(int val,int []array){
if(val!=array[i]){
if(i
二分法查找:
(首先二分法查找要求要查找的数组中的数必须是经过排序的)
思想:就是先找到数组中中间的那个数与要查找的数进行比较,如果中间的数大(中间的数小)就去取中间的数左边(右边)的那个数组中的中间的数再与要查找的数进行比较,然后重复上边的过程直到找到(或者最终都没找到)为止。
代码:
class BinarySearch{
public void search(int leftIndex,int rightIndex,int val,int []array){
//首先找到中间的数
int midIndex = (leftIndex+rightIndex)/2;//java中除不尽的会自动取整
int midVal = array[midIndex];
if(leftIndex<=rightIndex){//随着不断地递归leftIndex会不断地增加,rightIndex会不断地减小,也就是说leftIndex
//在不断的向右靠,rightIndex会不断地向左靠。
//如果要找的数比中间数小
if(val
midVal){//如果要找的数比中间数大
//在midVal右边的数中找
search(midIndex+1,rightIndex,val,array);
}else if(val==midVal){
System.out.println("找到了!下标为:"+midIndex);
}
}else{
System.out.println("没有要找的结果");
}
}
}
注意:顺序查找的效率比较低一点,二分法查找的数组必须为有序数组。