Linear and Binary Search Instructor Mainak Chaudhuri mainakccse
Linear and Binary Search Instructor: Mainak Chaudhuri mainakc@cse. iitk. ac. in 1
Linear search class Linear. And. Binary. Search { public static void main (String arg[]) { int size = 20, key = 23; int array[] = new int[size]; Initialize (array, size); // not shown Print. Array (array, size); // not shown System. out. println (“Linear search result: ” + Linear. Search (array, key)); System. out. println (“Binary search result: ” + Binary. Search (array, 0, size-1, key)); } 2
Linear search public static int Linear. Search (int array[], int key) { int i; } for (i=0; i<array. length; i++) { if (array[i] == key) { return i; } } return -1; 3
Binary search public static int Binary. Search (int array[], int start, int end, int key) { // Pre-condition: array is sorted // Caution: binary search does not work // on unsorted arrays. int mid; if (start > end) return -1; if (start == end) { if (key == array[start]) return start; else return -1; } // continued in next slide 4
Binary search mid = (start + end)/2; if (key == array[mid]) return mid; else if (key < array[mid]) { return Binary. Search (array, start, mid-1, key); } else { return Binary. Search (array, mid+1, end, key); } } } // end class 5
Run time analysis • Linear search in the worst case requires n comparisons • Binary search in the worst case requires O(log n) comparisons – Solution to T(n) = T(n/2) + O(1) – Remember that binary search can be applied to sorted arrays only 6
- Slides: 6