JAVA之二分查找
程序员文章站
2024-01-13 22:33:04
...
package binarySearch;
import java.util.Scanner;
public class BinarySearch {
public static void main(String[] args) {
// TODO Auto-generated method stub
final int SIZE = 5;
int array[] = new int[SIZE];
Scanner input = new Scanner(System.in);
System.out.println("输入"+SIZE+"个数组的有序值:");
for(int i=0; i<SIZE; i++) {
array[i] = input.nextInt();
}
System.out.printf("输出需要查找的值:");
int find = input.nextInt();
int index = Search(array, find, 0, array.length-1);
if(index != -1)
System.out.println("查找值在数组中的下标为:"+index);
else
System.out.println("数组中无该值");
}
public static int Search(int a[], int find, int low, int high) {
while(low <= high) {
int mid = (low+high)/2;
if(a[mid] == find)
return mid;
if(find > a[mid])
low = mid+1;
if(find < a[mid])
high = mid-1;
}
return -1;
}
}
采用递归:
package binarySearch;
import java.util.Scanner;;
public class Recursion_BinarySearch {
public static void main(String[] args) {
// TODO Auto-generated method stub
final int SIZE = 5;
int array[] = new int[SIZE];
Scanner input = new Scanner(System.in);
System.out.println("输入"+SIZE+"个数组的有序值:");
for(int i=0; i<SIZE; i++) {
array[i] = input.nextInt();
}
System.out.printf("输出需要查找的值:");
int find = input.nextInt();
int index = Search(array, find, 0, array.length-1);
if(index != -1)
System.out.println("查找值在数组中的下标为:"+index);
else
System.out.println("数组中无该值");
}
public static int Search(int a[], int find, int low, int high) {
if(low> high) //找不到结束
return -1;
int mid = (low+high)/2;
if(a[mid] == find)
return mid;
if(find > a[mid])
return Search(a, find, mid+1, high);
if(find < a[mid])
return Search(a, find, low, mid-1);
return -1;
}
}
下一篇: PHP调用谷歌翻译实现翻译功能