Known complexities for average, best and worst cases are considered as follows :
Worst case performance = O(log n)
Best case performance = O(1)
Average case performance = O(log n)
Following is the recursive implementation of binary search algorithm in Java.
package basics; import java.util.Arrays; public class RecursiveBinarySearch { public static int index( int[] input, int key ) { return index( input, key, 0, input.length-1 ); } public static int index( int[] input, int key, int low, int high ) { if( low>high ) return -1; int mid = low+(high-low)/2; if( key>input[mid] ) return index(input, key, mid+1, high); else if( key<input[mid] ) return index( input, key, low, mid-1 ); else return mid; } public static void main(String[] args) { int[] list = {22,55,66,11,32,56,67,89,95,10}; Arrays.sort(list); System.out.print("Sorted Array = "); for (int i = 0; i < list.length; i++) { System.out.print(list[i]+" "); } int itemIndex = index(list, 22); System.out.println("\n\nItem = "+22+", Index = "+itemIndex); itemIndex = index(list, 11); System.out.println("Item = "+11+", Index = "+itemIndex); itemIndex = index(list, 67); System.out.println("Item = "+67+", Index = "+itemIndex); itemIndex = index(list, 10); System.out.println("Item = "+10+", Index = "+itemIndex); itemIndex = index(list, 101); System.out.println("Item = "+101+", Index = "+itemIndex); } }
Create a RecursiveBinarySearch.java file in your workspace.
When the main method inside the RecursiveBinarySearch class executed it is going to print :
Sorted Array = 10 11 22 32 55 56 66 67 89 95
Item = 22, Index = 2
Item = 11, Index = 1
Item = 67, Index = 7
Item = 10, Index = 0
Item = 101, Index = -1
No comments:
Post a Comment