The problem The code does not work on certain data sets. Fix the sets but do not
ID: 3709033 • Letter: T
Question
The problem
The code does not work on certain data sets. Fix the sets but do not alter the binary search algorithm.
/**
* Binary search to fix data sets issues
*/
import java.util.Scanner;
public class BinarySearch {
/** Use binary search to find the key in the list */
public static int binarySearch(int[] list, int key) {
int low = 0;
int high = list.length - 1;
while (high >= low) {
int mid = (low + high) / 2;
if (key < list[mid])
high = mid - 1;
else if (key == list[mid])
return mid;
else
low = mid + 1;
}
return -low - 1;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int set = in.nextInt();
int key = in.nextInt();
int[][] datasets = { {},
{1,2,3,5,8,13,21,34,55,89},
{-81, -72, -63, -54, -45, -36, -27, -18, -9, 0},
{21, 34, 72, -63, 8, 5, -13, -27, -18, 1, 0, 2}
};
System.out.println("Searching for key " + key +
" in data set " + set +
" returned " + binarySearch(datasets[set], key));
}
}
Explanation / Answer
Answer:
datasets value sshould be in sorted order because we are using binary serach.
BinarySearch.jaav
import java.util.Scanner;
public class BinarySearch {
/** Use binary search to find the key in the list */
public static int binarySearch(int[] list, int key) {
int low = 0;
int high = list.length - 1;
while (high >= low) {
int mid = (low + high) / 2;
if (key < list[mid])
high = mid - 1;
else if (key == list[mid])
return mid;
else
low = mid + 1;
}
return -low - 1;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int set = in.nextInt();
int key = in.nextInt();
int[][] datasets = { {},
{1,2,3,5,8,13,21,34,55,89},
{-81, -72, -63, -54, -45, -36, -27, -18, -9, 0},
{-63,-27, -18, -13, 0,1, 2,5,8,21,34,72}
};
System.out.println("Searching for key " + key +
" in data set " + set +
" returned " + binarySearch(datasets[set], key));
}
}
Output:
3
0
Searching for key 0 in data set 3 returned 4
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.