Sunday, 10 September 2017

Exponential Search using Java....

Here is the code ....

public class ExponentialSearch {

 public static void main(String[] args) {

  // Array of items on which search will
  // be conducted.
  int arr[] = new int[] { 10, 12, 13, 16, 18, 19, 20, 21, 22, 23, 24, 33, 35, 42, 47 };
  int valueToSearch = 24;
  int i = 1;

  if (arr[0] == valueToSearch) {
   System.out.println("ELement found at location");
   return;
  }

  while (i < arr.length && arr[i] <= valueToSearch) {
   i = i * 2;

   int loc = binarySearrch(arr, valueToSearch, i / 2, min(i, arr.length - 1));
   if (loc != -1) {
    System.out.println("Element found at location : " + loc);
    break;
   }
  }
 }

 public static int binarySearrch(int[] arr, int valueToSearch, int startIndex, int lastIndex) {

  if (lastIndex == startIndex) {
   if (arr[lastIndex] == valueToSearch)
    return lastIndex;
   else
    return -1;
  } else {

   int mid = (startIndex + lastIndex) / 2;
   if (arr[mid] == valueToSearch)
    return mid;
   else if (arr[mid] > valueToSearch)
    return binarySearrch(arr, valueToSearch, startIndex, mid - 1);
   else
    return binarySearrch(arr, valueToSearch, mid + 1, lastIndex);
  }
 }

 public static int min(int i, int j) {
  if (i < j)
   return i;
  else
   return j;
 }
}


       
 

No comments:

Post a Comment