Skip to main content

Binary Search Algorithm

Binary search compares the target value to the middle element of the array. 

If they are not equal, the half in which the target cannot lie is eliminated and the search continues on the remaining half, 

again taking the middle element to compare to the target value, and repeating this until the target value is found. 

If the search ends with the remaining half being empty, the target is not in the array.


Java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 public class BinarySearch{

     public static void main(String []args){
        int[] arr = {1, 2, 4, 5, 7, 11, 12, 15};
        int target = 7;
        System.out.println(binarySearchRec(arr, target, 0, arr.length-1));
        System.out.println(binarySearchIter(arr, target));
     }
     // Using recursion
     public static boolean binarySearchRec(int[] arr,int target,int left,int right){
         if(left>right)
            return false;
         int mid = left + ((right-left)/2);
         if(arr[mid]==target)
            return true;
         else if(arr[mid]>target)
            return binarySearchRec(arr, target, left, mid-1);
         else
            return binarySearchRec(arr, target, mid+1, right);
     }
     // Using Iterative Approach
     public static boolean binarySearchIter(int[] arr,int target){
         int left = 0;
         int right = arr.length-1;
         while(left<=right){
            int mid = left + ((right-left)/2);
            if(arr[mid]==target)
                return true;
            else if(arr[mid]>target)
                right = mid - 1;
            else
                left = mid + 1;
        }
        return false;
     }
 }

Popular posts from this blog

Check whether a number is Seed of another number

 A number P is said to be the seed of another number Q if multiplying P with its digits equates to Q. Ex:-  123 is seed of 738 as    123 * 1 * 2 * 3 = 738  Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public class Seed{ public static void main (String[] args){ int num1 = 123 , num2 = 738 ; num1 = Math. min (num1,num2); num2 = Math. max (num1,num2); System. out . println (checkSeed(num1, num2)); } public static boolean checkSeed ( int num1, int num2){ int seed = num1; while (num1> 0 ){ seed = seed * (num1% 10 ); num1 = num1 / 10 ; } if (seed==num2) return true ; else return false ; } } Python def checkSeed(num1,num2): seed = num1 while num1 > 0 : seed = seed * (num1 % 10 ) num1 = num1 // 10 if seed == n

Program to sort the first half of an array in ascending and second half in descending order

Ex:-  [2, 4, 3, 10, 5, 8] [2, 4, 3]  and [10, 5, 8] ====>  [2, 3, 4] ascending                                                              [10, 8, 5] descending [ 2, 3, 4, 10, 8, 5] is the required answer.  Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 public class ArraySort{ public static void main (String[] args){ int [] arr = { 2 , 4 , 3 , 10 , 5 , 8 }; //sorting first half in ascending order for ( int i= 0 ; i<(arr. length / 2 ); i++){ for ( int j=i+ 1 ; j<(arr. length / 2 ); j++){ if (arr[i]>arr[j]){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } //sorting second half in descending order for ( int i=(arr. length / 2 ); i<arr. length ; i++){ for ( int j=i+ 1 ; j<arr. length ; j++)

Write a method to move hyphens to the left and characters to the right in a string

 Ex:-     code--heist--   ==>     ----codeheist Note:-  Return null or None if str is empty. Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public static String moveHyphens (String str) { if (str. length ()== 0 ) return null ; else { String result = "" ; for ( int i= 0 ; i<str. length (); i++){ char ch = str. charAt (i); if (ch== '-' ) result = ch + result; else result += ch; } return result; } } Python def moveHyphens (str): if len(str)== 0 : return None else : result = "" for char in str: if char== '-' : result = char + result; else : result += char return result