Learn-dsa..in 30 days!






















Exponential Search Code:

// Rename the file to SearchExponentialSearch.java before running it

import java.util.Arrays;

public class SearchExponentialSearch {

public int exponentialSearch(int[] nums, int toSearch){
	if (nums[0] == toSearch) {return 0;}
	int partitionEndIdx=1;
	while ((partitionEndIdx < nums.length)&& (nums[partitionEndIdx] <=toSearch)) {
		partitionEndIdx=partitionEndIdx*2;
	}
	int cappedEndIdx=partitionEndIdx;
	if (cappedEndIdx > nums.length) {
		cappedEndIdx=nums.length;
	}
	return Arrays.binarySearch(nums, partitionEndIdx/2, cappedEndIdx, toSearch);
}



public static void main(String[] args) {
	/***********************
	 Test cases given below:
	 **********************/
	int retVal;
	try {
	
	SearchExponentialSearch search=new SearchExponentialSearch();
	int[] nums= { 3,22,44,67,77,96,122, 244};
	int toSearch=96;
	retVal=search.exponentialSearch(nums, toSearch);
	
	System.out.println("\nArray:");
	int arrayIndex=0;
	for (arrayIndex=0; arrayIndex < nums.length; arrayIndex++) {
		System.out.print(nums[arrayIndex]+", ");		
	} 
	
	System.out.println("\n\n"+toSearch + " found at index "+ retVal);	
	toSearch=122;
	retVal=search.exponentialSearch(nums, toSearch);
	System.out.println("\n"+toSearch + " found at index "+ retVal);	
	
	toSearch=77;
	retVal=search.exponentialSearch(nums, toSearch);
	System.out.println("\n"+toSearch + " found at index "+ retVal);	
	
	toSearch=3;
	retVal=search.exponentialSearch(nums, toSearch);
	System.out.println("\n"+toSearch + " found at index "+ retVal);	
	
	toSearch=22;
	retVal=search.exponentialSearch(nums, toSearch);
	System.out.println("\n"+toSearch + " found at index "+ retVal);	
	
	toSearch=44;
	retVal=search.exponentialSearch(nums, toSearch);
	System.out.println("\n"+toSearch + " found at index "+ retVal);	
	
	toSearch=67;
	retVal=search.exponentialSearch(nums, toSearch);
	System.out.println("\n"+toSearch + " found at index "+ retVal);	
	
	toSearch=244;
	retVal=search.exponentialSearch(nums, toSearch);
	System.out.println("\n"+toSearch + " found at index "+ retVal);	
	
	toSearch=-1;
	retVal=search.exponentialSearch(nums, toSearch);
	System.out.println("\n"+toSearch + " found at index "+ retVal);	
	
	toSearch=301;
	retVal=search.exponentialSearch(nums, toSearch);
	System.out.println("\n"+toSearch + " found at index "+ retVal);	
	
	
	}catch (Exception exception) {
		System.out.print("Exception: "+ exception);
		exception.printStackTrace();
	}
		
}



}