그들의 목적은 키와 배열 항목 사이의 비교 수를 반환하는 것입니다. Java를 처음 사용하고 모범 사례를 완전히 이해하지 못하여 변경해야 할 것이 있으면 알려주십시오.Java 2 진 및 선형 검색 알고리즘이 올바르게 작동합니까?
public class BinaryVsLinear {
private static int linearSearch(int key, int[] array){
int count = 0;
for (int i = 0; i < array.length; i++){
count++;
if (array[i] == key){
i += array.length +1;
}
}
return count;
}
private static int binarySearch(int key, int[] array){
int count = 0, l = 0, r = array.length -1;
while (l <= r){
int m = (l+r)/2;
count++;
if (array[m] == key){
return count;
}
count++;
if (array[m] < key){
l = m + 1;
}
else{
r = m - 1;
}
}
return count;
}
두 입력을 모두 정렬합니까? 바이너리 검색은 정렬 된 데이터에서만 작동하며 정렬 된 데이터에서 작동하는 경우 선형 검색이 빨라질 수 있습니다 (array [i]> 키를 반환 할 때). – phflack
예, 둘 모두에 대한 입력이 정렬됩니다. –