51,412
社区成员
发帖
与我相关
我的任务
分享
package test;
import java.util.Scanner;
public class Binary {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int k = 1;
System.out.println("输入个数");
int n = reader.nextInt();
Stu[] s = new Stu[500];
System.out.println("输入值");
for (int i = 0; i < n; i++) {
s[i] = new Stu();
s[i].v = reader.nextInt();
s[i].t = k;
k++;
}
//你这里没有输入要查找的数字
System.out.println("輸入要查找的数字");
int m = reader.nextInt();
//冒泡排序
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (s[j].v > s[j + 1].v) {
swap(s[j], s[j + 1]);
}
}
}
if (binarySort(s,n,m) == -1) {
System.out.println("找不到");
} else {
System.out.println("找到了,在第" + s[binarySort(s, n,m)].t + "个位置");
}
}
public static void swap(Stu x, Stu y) {
Stu temp;
temp = x;
x = y;
y = temp;
}
public static int binarySort(Stu[] source, int n,int key) {
int low = 0;
int high = n - 1; //n为输入的个数
while (low <= high) {
int mid = (low + high) / 2;
int midVal = source[mid].v;
if (midVal < key) {
low = mid + 1;
} else if (midVal > key) {
high = mid - 1;
} else {
return mid;
}
}
return -1;
}
}
class Stu {
int v,t = 0;// v为值 t为位置
}
public static void swap(Stu x,Stu y)
{
int temp;
temp=x.v;
x.v = y.v;
y.v =temp;
temp=x.t;
x.t = y.t;
y.t =temp;
}