가능한 중복 :
What is the difference between Linear search and Binary search?자바 - 선형 검색과 이진 검색의 성능을 비교
는 0 ~ 100의 범위 내에서 20 임의의 정수를 생성하는 프로그램을 작성 배열을 내림차순으로 정렬합니다. 그런 다음 사용자로부터 정수 입력을받습니다. 그런 다음이 번호를 사용하여 배열을 검색하십시오. 선형 검색과 이진 검색의 성능을 비교하십시오.
여기에 내 코드
import java.util.Arrays;
import java.util.Scanner;
public class search {
public static void main(String args[]) {
int[] num = new int[20];
for (int i = 0; i < num.length; i++) {
num[i] = (int) (Math.random() * 101);
}
System.out.println("A list of 20 random intergers with 0 - 100");
System.out.println(Arrays.toString(num));
for (int j = 1; j < num.length; j++) {
for (int k = 0; k < num.length - 1; k++) {
if (num[k] < num[k + 1]) {
int hold = num[k + 1];
num[k + 1] = num[k];
num[k] = hold;
}
}
}
System.out.println("Array in descending order");
System.out.println(Arrays.toString(num));
Scanner input = new Scanner(System.in);
System.out.print("Enter a number to search: ");
int num2 = input.nextInt();
int loop = 0;
for (int cnt = 0; cnt < num.length; cnt++)
{
if (num[cnt] == num2)
{
loop = cnt;
System.out.println(num2+ " found");
}
}
System.out.println("Linear search - "+loop+ " loop(s)");
int loop2 = 0;
int low = 0; // low element subscript
int high = num.length - 1; // high element subscript
int middle; // middle element subscript
while (low <= high) {
middle = (low + high)/2;
if (num2 == num[ middle ]) {
}
else if (num2 > num[ middle ])
{
low = middle +1;
loop2++;
}
else{
high = middle - 1;
loop2++;
}
}
System.out.println("Binary search - "+loop2+ " loop(s)");
}
}
내가 선형 검색 루프의 수를 얻을 수있다. 그러나 바이너리 검색 루프 번호를 얻을 수 없습니다.
"얻을 수 없다"는 것은 무엇을 의미합니까? 오류가 있습니까? – alestanis
'선형 검색과 이진 검색의 성능 비교 '는 루프 수를 계산하는 대신 수행 된 비교 횟수를 의미 할 수도 있습니다. – Sujay
'System.out.println ("바이너리 검색 -"+ loop2 + "루프 (들)");의 출력은 무엇입니까? – mcalex