package com.text_1;
import java.util.Random;
import java.util.Scanner;
public class mppx {
public static void main(String[] args) {
// TODO 自动生成的方法存根
// 数组的二分查找法
// 前提:数组要排好序
// 1、随机生成数组
Random r = new Random();
int[] array = new int[9];
for (int i = 0; i < array.length; i++) {
// 产生随机数
array[i] = r.nextInt(100);
}
// 遍历输出数组
System.out.println("从100个数字中随机9个数");
for (int t : array) {
System.out.print(t + " ");
}
// 进行冒泡排序
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length - 1; j++) {
if (array[j] > array[j + 1]) {
int t = array[j];
array[j] = array[j + 1];
array[j + 1] = t;
}
}
}
System.out.println();
System.out.println("排序后的数据");
for (int a : array) {
System.out.print(a + " ");
}
System.out.println();
// 二分法找数字
// 1、输入需要寻找的数字
Scanner sc = new Scanner(System.in);
System.out.println("请输入需要查找的数字:");
int a = sc.nextInt();
int b = -1;// 没找到输出-1
// 2、定义下标
int start = 0;// 开始索引
int end = array.length - 1;// 结束索引
while (start <= end)
{
int mid = (start + end) / 2;
if (a == array[mid])
{
b = mid;
break;// 找到数字跳出
}
else if (a > array[mid])
{
start = mid + 1;
}
else
{
end = mid - 1;
}
}
System.out.println("找到数字的位置是第" +(b+1)+"个");
}
}