Java程序语言 顺序查找、二分查找
程序员文章站
2024-03-17 16:30:34
...
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);
}
}
上一篇: 03.js中如何复制一个对象?
下一篇: 用Java实现一个简单的学生信息管理系统