1
이 프로그램은 정수가 있는지 여부와 발견하는 데 걸린 시간을 감지합니다. 첫 번째는 선형 검색이고 두 번째는 이진 검색입니다. 내가 겪고있는 문제는 이것입니다. 선형 검색은 작동하지만, "선형 검색 성공"메시지가 반복해서 표시되는 것을 제외하고는 작동합니다. 나는 바이너리 검색이 왜 솔직하게 아무것도 출력하지 않는지 잘 모르겠다. 어떤 도움도 감사합니다이진 및 선형 검색
public class search {
/**
* @param args
*/
public static void main(String[] args) {
Scanner scanner1 = new Scanner(System.in);
System.out.println("Please enter in an integer:");
int searchValue = scanner1.nextInt();
int[] numbers = new int[1000];
try {
Scanner scanner = new Scanner(new File("numbers.txt"));
for (int i = 0; i < 1000; i++) {
numbers[i] = scanner.nextInt();
}
} catch (FileNotFoundException e) {
System.out
.println("A problem occurred reading the file numbers.txt");
System.exit(0);
}
long time = System.nanoTime();
int linear = linearSearch(numbers, searchValue);
long end = System.nanoTime();
System.out.println(end - time);
}
public static int linearSearch(int[] numbers, int searchValue) {
for (int i = 0; i < numbers.length; i++) {
if (numbers[i] > searchValue)
return -1;
else if (numbers[i] == searchValue)
return i;
System.out.println("Linear search successful");
}
return -1;
}
public int binarySearch(int searchValue, int[] numbers) {
long time = System.nanoTime();
int low = 0;
int high = numbers.length - 1;
while (low <= high) {
int middle = low + (high - low)/2;
if (numbers[middle] == searchValue) {
System.out.println("Binary found");
long end = System.nanoTime();
System.out.println(end - time);
}
if (searchValue < numbers[middle])
high = middle - 1;
else if (searchValue > numbers[middle])
low = middle + 1;
else
return middle;
}
return -1;
}
}
'System.out.println ("선형 검색 성공")은'for' 루프입니다. 그것이 반복되는 것을 본 이유입니다. – davmac