关于一个二分查找数据结构没学好运行没报错好像进入死循环了最后
import java.util.Scanner;public class BiranySearch{
public static void main(String args[]){
Scanner s = new Scanner(System.in);
int arr[] = setArray();
System.out.println("========生成的一组随机数是=========");
print(arr);
System.out.println("========排列好的这组数是===========");
sort(arr);
print(arr);
System.out.println("请输入要查找的数据 若输出为-1 则查找的数不存在");
int target = s.nextInt();
System.out.println(Search(arr,0,9,target));
}
public static void print(int[] Array){
for(int i=0;i<=9;i++){
System.out.print(Array[i]+"\t");
}
}
public static int[] setArray(){
int a[] = new int[10];;
for(int i = 0;i <= 9;i++){
a[i] = (int)(Math.random() *100) ;
}
return a;
}
public static int[] sort(int[] Array){
java.util.Arrays.sort(Array);
return Array;
}
public static int Search(int[] Array,int left,int right,int target){
while(left<=right){
if(target == Array[(left+right)/2]) return (left+right)/2;
if(target < Array[(left+right)/2]) Search(Array,left,(left+right)/2-1,target);
if(target > Array[(left+right)/2]) Search(Array,(left+right)/2+1,right,target);
}
return -1;
}
}
import java.util.Scanner;public class BiranySearch{
public static void main(String args[]){
Scanner s = new Scanner(System.in);
int arr[] = setArray();
System.out.println("========生成的一组随机数是=========");
print(arr);
System.out.println("========排列好的这组数是===========");
sort(arr);
print(arr);
System.out.println("请输入要查找的数据 若输出为-1 则查找的数不存在");
int target = s.nextInt();
System.out.println(Search(arr,0,9,target));
}
public static void print(int[] Array){
for(int i=0;i<=9;i++){
System.out.print(Array[i]+"\t");
}
}
public static int[] setArray(){
int a[] = new int[10];;
for(int i = 0;i <= 9;i++){
a[i] = (int)(Math.random() *100) ;
}
return a;
}
public static int[] sort(int[] Array){
java.util.Arrays.sort(Array);
return Array;
}
public static int Search(int[] Array,int left,int right,int target){
while(left<=right){
if(target == Array[(left+right)/2]) return (left+right)/2;
if(target < Array[(left+right)/2]) Search(Array,left,(left+right)/2-1,target);
if(target > Array[(left+right)/2]) Search(Array,(left+right)/2+1,right,target);
}
return -1;
}
}
public static int Search(int[] Array, int left, int right, int target)
{
while (left <= right)
{
if (target == Array[(left + right) / 2]) return (left + right) / 2;
if (target < Array[(left + right) / 2]) return Search(Array, left, (left + right) / 2 - 1, target);
if (target > Array[(left + right) / 2]) return Search(Array, (left + right) / 2 + 1, right, target);
}
return -1;
}