JAVA----二分法查找有序数组元素位置
程序员文章站
2024-03-17 15:04:34
...
代码:
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("输入数组个数:");
int n=scan.nextInt();
int num[]=new int[n];
// int[] num=new int [n];
System.out.println("生成n个不相同的数组数:");
for(int i=0;i<num.length;i++)
{
num[i]=(int)(Math.random()*100+1);
for(int j=0;j<i;j++)
{
if(num[i]==num[j])
{
i--;//退回该值重新赋值;
break;
}
}
}
Arrays.sort(num);
for(int i:num)
{
System.out.print(i+"\t");
}
System.out.println();
//二分法查找是是在有序数组中进行的
System.out.println("输入你想要查找的数:");
int temp=scan.nextInt();
int head=0;
int end=num.length-1;
boolean flag=true;//默认值为false;
while(head<=end)
{
int middle=(head+end)/2;
if(num[middle]==temp)
{
System.out.println("找到该数值:位置为第"+(middle+1)+"个");
flag=false;
break;
}
else if(num[middle]<temp)
{
head=middle+1;
}
else{
end=middle-1;
}
}
if(flag)
{
System.out.println("不好意思,该数组查无此值");
}
}
运行结果:
输入数组个数:
12
生成n个不相同的数组数:
7 17 23 34 45 73 79 85 89 92 97 99
输入你想要查找的数:
79
找到该数值:位置为第7个
上一篇: 牛客-求交集(二分)
下一篇: 牛客竞赛——借教室(二分+差分)