您的位置:首页 > 编程语言 > Java开发

Java程序语言 顺序查找、二分查找

2012-08-28 20:03 330 查看
public class LinearSearch {
/**
* 顺序查找方法
* @param arr 数组
* @param val 所需要查找的值
* @return 返回查找值的下标
*/
public static int linearSearch(int arr[], int val){
for(int i = 0; i < arr.length; i++){
if(val == arr[i])
return i;
}
return - 1;
}

public static void main(String[] args){
int []arr = {1, 4, 4, 2, 5, -3, 6, 2};
int index = linearSearch(arr, 5);
System.out.println("你所查找的值的下标: " + index);
}
}


/**
* Java 二分查找
* @author wwj
* 要求:数组已经排好序
* 效率:较高
*/
public class BinarySearch {
/**
* 二分查找方法
* @param leftIndex 最左边的下标
* @param rightIndex 最右边的下标
* @param val 查找的值
* @param arr 数组
*/
public void binaryFind(int leftIndex, int rightIndex, int val, int arr[]){
int midIndex = (leftIndex + rightIndex) / 2;
int midVal = arr[midIndex];

if(rightIndex >= leftIndex){
// 如果所查找的值小于中间值,则在左边的有序表中中查找
if(val < midVal){
// 递归
binaryFind(leftIndex, midIndex - 1, val, arr);
}
// 如果所查找的值大于中间值,则在右边的有序表中查找
else if(val > midVal){
binaryFind(midIndex + 1, rightIndex, val, arr);
}
else if(val == midVal){
System.out.println("恭喜你,查找到下标" + midIndex);
}
}
}
public static void main(String[] args){
int arr[]= {1, 2, 5, 7 , 12};
BinarySearch bf = new BinarySearch();
bf.binaryFind(0, arr.length - 1, 0, arr);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: