2013-04-09 6 views
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; 
} 
} 
+0

'System.out.println ("선형 검색 성공")은'for' 루프입니다. 그것이 반복되는 것을 본 이유입니다. – davmac

답변

0

binarySearch() 기능을 절대로 호출하지 않았기 때문입니다. linearSearch()으로 전화하십시오.

/* Call to linearSearch is here */ 
int linear = linearSearch(numbers, searchValue); 

/* No call to binarySearch to put here */ 
+0

고마워, 지금 일하고있어. 내가 그리워하는 것이 항상 분명하다. – user2120893