我的第一个二进制搜索技术是否犯了一个简单的错误?
Did I make a simple mistake with my first binary search technique?
我创建了一个数组来生成 1-100 之间的 10 个随机数,并使用 for 循环对它们进行排序(应该使用 "enhanced for loop")。除了增强我的 for 循环之外,剩下的最后一件事是“输入一个值,使用 二进制搜索技术 搜索数组以确定值是否存在并输出它。你看到什么了吗错了?谢谢!
import java.util.*;
class lab4point2 //lab4.2 part 1 {
public static void main(String args[]) {
int[] array = new int[10]; //array of 10 numbers created.
Random rand = new Random(); //random class created called rand.
for (int cnt = 0; cnt < array.length; cnt++) { //for loop to generate
array[cnt] = rand.nextInt(100) + 1; // the 10 numbers randomly 1-100
}
Arrays.sort(array); //sorted
System.out.println(Arrays.toString(array));// prints the 10 numbers to screen
System.out.print("Enter a value to see if it is present. ");
Scanner scanner = new Scanner(System.in);
int value = scanner.nextint();
boolean binarySearch(array, 0, 99, value);
int size = 100;
int low = 0;
int high = size - 1;
while (high >= low) {
int middle = (low + high) / 2;
if (data[middle] == value) {
System.out.print("Value is present ");
return true;
}
if (data[middle] < value) {
low = middle + 1;
}
if (data[middle] > value) {
high = middle - 1;
}
}
System.out.print("Value is not present. ");
return false;
}
}
您的代码中存在一些语法错误。它应该看起来更像以下内容:
class SearchArray {
private final int[] array = new int[10];
private final Random random = new Random();
public SearchArray() {
for (int i = 0; i < array.length; i++) {
array[i] = random.nextInt(100) + 1;
}
Arrays.sort(array);
}
public String toString() {
return Arrays.toString(array);
}
public boolean contains(int value) {
int low = 0;
int high = array.length - 1;
while (high >= low) {
int middle = (low + high) / 2;
if (array[middle] == value) {
return true;
}
if (array[middle] < value) {
low = middle + 1;
}
if (array[middle] > value) {
high = middle - 1;
}
}
return false;
}
class lab4point2 {
public static void main(String args[]) {
SearchArray array = new SearchArray();
System.out.println(array.toString());
System.out.print("Enter a value to see if it is present. ");
Scanner scanner = new Scanner(System.in);
int value = scanner.nextint();
if (array.contains(value)) {
System.out.print("Value is present. ");
} else {
System.out.print("Value is not present. ");
}
}
}
我创建了一个数组来生成 1-100 之间的 10 个随机数,并使用 for 循环对它们进行排序(应该使用 "enhanced for loop")。除了增强我的 for 循环之外,剩下的最后一件事是“输入一个值,使用 二进制搜索技术 搜索数组以确定值是否存在并输出它。你看到什么了吗错了?谢谢!
import java.util.*;
class lab4point2 //lab4.2 part 1 {
public static void main(String args[]) {
int[] array = new int[10]; //array of 10 numbers created.
Random rand = new Random(); //random class created called rand.
for (int cnt = 0; cnt < array.length; cnt++) { //for loop to generate
array[cnt] = rand.nextInt(100) + 1; // the 10 numbers randomly 1-100
}
Arrays.sort(array); //sorted
System.out.println(Arrays.toString(array));// prints the 10 numbers to screen
System.out.print("Enter a value to see if it is present. ");
Scanner scanner = new Scanner(System.in);
int value = scanner.nextint();
boolean binarySearch(array, 0, 99, value);
int size = 100;
int low = 0;
int high = size - 1;
while (high >= low) {
int middle = (low + high) / 2;
if (data[middle] == value) {
System.out.print("Value is present ");
return true;
}
if (data[middle] < value) {
low = middle + 1;
}
if (data[middle] > value) {
high = middle - 1;
}
}
System.out.print("Value is not present. ");
return false;
}
}
您的代码中存在一些语法错误。它应该看起来更像以下内容:
class SearchArray {
private final int[] array = new int[10];
private final Random random = new Random();
public SearchArray() {
for (int i = 0; i < array.length; i++) {
array[i] = random.nextInt(100) + 1;
}
Arrays.sort(array);
}
public String toString() {
return Arrays.toString(array);
}
public boolean contains(int value) {
int low = 0;
int high = array.length - 1;
while (high >= low) {
int middle = (low + high) / 2;
if (array[middle] == value) {
return true;
}
if (array[middle] < value) {
low = middle + 1;
}
if (array[middle] > value) {
high = middle - 1;
}
}
return false;
}
class lab4point2 {
public static void main(String args[]) {
SearchArray array = new SearchArray();
System.out.println(array.toString());
System.out.print("Enter a value to see if it is present. ");
Scanner scanner = new Scanner(System.in);
int value = scanner.nextint();
if (array.contains(value)) {
System.out.print("Value is present. ");
} else {
System.out.print("Value is not present. ");
}
}
}