SHOW:
|
|
- or go back to the newest paste.
| 1 | /** | |
| 2 | * BinarySearch.java | |
| 3 | * | |
| 4 | * My first attempt; crude, but it works. | |
| 5 | */ | |
| 6 | ||
| 7 | import java.util.Scanner; | |
| 8 | ||
| 9 | public class BinarySearch {
| |
| 10 | public static void main(String[] args) {
| |
| 11 | Scanner sin = new Scanner(System.in); | |
| 12 | - | int[] array = getInts(sin); |
| 12 | + | int[] array = getInts(); |
| 13 | int n = 0, pos = 0, low = 0, high = (array.length - 1); | |
| 14 | ||
| 15 | System.out.print("Enter a number to find: ");
| |
| 16 | n = sin.nextInt(); | |
| 17 | ||
| 18 | if (n < array[low] || n > array[high]) | |
| 19 | System.out.println("Impossible to find.");
| |
| 20 | else if (n == array[low] || n == array[high]) | |
| 21 | System.out.println("array[" + pos + "]=\t" + array[pos]);
| |
| 22 | else {
| |
| 23 | while (array[pos] != n) {
| |
| 24 | if (n >= ((low + high) / 2)) low = (low + high) / 2; | |
| 25 | else if (n <= ((low + high) / 2)) high = (low + high) / 2; | |
| 26 | else break; | |
| 27 | ||
| 28 | pos = low; | |
| 29 | } | |
| 30 | ||
| 31 | - | } |
| 31 | + | |
| 32 | } | |
| 33 | } | |
| 34 | ||
| 35 | public static int[] getInts() {
| |
| 36 | int[] array = new int[1000]; | |
| 37 | - | for (int i = 0; i < (array.length - 1); i++) |
| 37 | + | |
| 38 | for (int i = 0; i < 1000; i++) | |
| 39 | array[i] = i; | |
| 40 | ||
| 41 | return array; | |
| 42 | } | |
| 43 | } | |
| 44 | ||
| 45 | // scottyeatscode.blogspot.com |