Java 生成随机数并进行查找
顺次查找和折中查找
import java.util.Scanner;
public class text3 {
public static void main(String args[]) {
System.out.println("请输入你想产生的随机数的个数:");
Scanner num = new Scanner(System.in);
int n = 0;
n = num.nextInt();
int[] list = new int[n];
int i;
for(i=0;i<=(n-1);i++) {
list[i] = (int)(Math.random()*n+1);
}
System.out.println("请输入你要查找的数:");
int data=0;
int t=0;
data=num.nextInt();
for(i=1;i<=(n-1);i++){
if(data!=list[i]) {
t++;
}
}
System.out.println("查找的次数为:"+t+","+"查找的位置为:"+i);
//对list进行排序
for(i=0;i<=n-2;i++) {
int j = 0;
for(j=(i+1);j<=(n-1);j++) {
if(list[i]>list[j]) {
int m=0;
m=i;
i=j;
j=m;
}
}
}
// 在有序的list中折半查找data
int low = 0;
int high = 0;
high = n-1;
int mid = 0;
mid = (low+high)/2;
int steps = 0;
while(low<=high) {
steps++;
if(list[mid]>data) {
high = mid-1;
}else if(list[mid]<data) {
low = mid+1;
}else {
break;
}
mid =(low+high)/2;
}
System.out.println("折半查找比较的次数"+steps+",位置"+mid);
}
}