java - Random Number Array using binarySearch and Linear Search -
i have created array , method sort array, still stuck on how implement binary search method in array. binary search method needs called array in main class.
public class search { public static boolean binarysearch(int[] array, int value) { return binarysearchhelper(array, value, 0, array.length); } private static boolean binarysearchhelper(int[] array, int value, int low, int high) { if (low <= high) { int mid = (low + high) / 2; if (value == array[mid]) { return true; } else if (value < array[mid]) { return binarysearchhelper(array, value, low, mid - 1); } else { return binarysearchhelper(array, value, mid + 1, high); } } return false; } public static boolean linearsearch(int[] array, int value) { (int = 0; < array.length; i++) { if (array[i] == value) { return true; } else if (array[i] > value) { return false; } } return false; } and here main
import java.util.random; import java.util.arrays; public class test { public static void main(string[] args) { //system.nanotime() give me current time (it's looking @ clock) //i'll save current time right (immediately) before start thing want time long start = system.nanotime(); long elapsed = system.nanotime() - start; random value = new random(); int size = 2000; int max = 5000; int[] array = new int[size]; (int = 0; < size; i++) { array[i] = value.nextint(); } arrays.sort(array); (int = 100; < 2000; i+=100) { start = system.nanotime(); ( int j = 0; j < 2000; j++){ search.binarysearch(array, value.nextint()); } } elapsed = system.nanotime() - start; system.out.println("total time elapsed is: "+ elapsed); } }
your binary search method looks me far.
your problem in main method:
for ( int j = 0; j < 2000; j++){ return array; } first of all, method end , return caller when use return statement. reason, only execute 1 iteration of loop, not intended behavior.
however, won't happen here anyways - won't able compile statement. java main method has return type void, means cannot return values when use return statement.
since assume trying create benchmark, not interested in outcome of search anyways, interested in how long take execute it.
to achieve this, why don't call , discard result?
for ( int j = 0; j < 2000; j++){ search.binarysearch(array, value.nextint()); } on side note, value might sub optimal name variable holds reference random, since not tell what's in - valuegenerator or random may better choices. tip might handy bigger projects it's not obvious variable instantiated.
Comments
Post a Comment