Posts

Showing posts from April, 2024

inversion sort 2

  public class inversionsort2 {     public static void inversionsort ( int arr []) {         for ( int i = 0 ; i < arr . length ; i ++ ) {             for ( int j = 0 ; j < arr . length ; j ++ ) {                 if ( j > i ) {                     if ( arr [ i ] > arr [ j ]) {                         System . out . println ( "(" + arr [ i ] + "," + arr [ j ] + ")" );                     }                 }                                 }                                 }     ...

inversion sort

  /**  * inversionsort  */ public class inversionsort {     public static int merge ( int arr [], int left , int mid , int right ) {         int i = left ;         int j = mid ;         int k = 0 ;         int invcount = 0 ;         int temp [] = new int [( right - left ) + 1 ];         while (( i < mid ) && j <= right ) {             if ( arr [ i ] <= arr [ j ]) {                 temp [ k ] = arr [ i ];                 k ++ ;                 i ++ ;             } else {                 temp [ k ] = arr [ j ];                 invcount ...

majority count O(n*logn) divide and conquer

  public class practice3 {     public static int countInRange ( int arr [], int lo , int hi , int num ) {         int count = 0 ;         for ( int i = lo ; i <= hi ; i ++ ) {             if ( arr [ i ] == num ) {                 count ++ ;             }         }         return count ;     }     public static int majorityelements ( int arr [], int lo , int hi ) {         if ( lo == hi ) {             return arr [ lo ];         }         int mid = ( hi - lo ) / 2 + lo ;         int left = majorityelements ( arr , lo , mid );         int right = majorityelements ( arr , mid + 1 , hi );    ...

majority count O(n^2)

  //MAJORITY COUNT public class practice2 {     public static int majoritycount ( int arr []) {         int majoritycount = arr . length / 2 ;         for ( int i = 0 ; i < arr . length ; i ++ ) {             int count = 0 ;             for ( int j = 0 ; j < arr . length ; j ++ ) {                 if ( arr [ j ] == arr [ i ]) {                     count += 1 ;                 }             }             if ( count > majoritycount ) {                 return arr [ i ];             }         }         return - 1 ;     }   ...

applying meerge sort on strings

  import java . util .* ; public class practice {     public static String [] mergesort ( String arr [], int si , int ei ) {         int mid = si + ( ei - si ) / 2 ;         if ( si == ei ) {             String [] A = { arr [ si ] };             return A ;         }         String [] arr1 = mergesort ( arr , si , mid );         String [] arr2 = mergesort ( arr , mid + 1 , ei );         String [] arr3 = merge ( arr1 , arr2 );         return arr3 ;     }     public static String [] merge ( String arr1 [], String arr2 []) {         int m = arr1 . length ;         int n = arr2 . length ;         String [] arr3 = new String [ m + n ];       ...

searching in rotated sorted array

  public class searchinsortedrotatedarray {     public static int search ( int arr [], int tar , int si , int ei ){         if ( si > ei ) {             return - 1 ;         }         int mid = si + ( ei - si ) / 2 ;         if ( arr [ mid ] == tar ) {             return mid ;         }                 //MID ON L1         if ( arr [ si ] <= arr [ mid ] ) {                         //CASE a: LEFT             if ( arr [ si ] <= tar && tar <= arr [ mid ]) {                 return search ( arr , tar , si , mid - 1 );             }          ...

quick sort

  public class quicksort {     public static void quicksort ( int arr [], int si , int ei ) {         if ( si >= ei ) {             return ;         }         int pidx = partition ( arr , si , ei );         quicksort ( arr , si , pidx - 1 );         quicksort ( arr , pidx + 1 , ei );     }     public static int partition ( int arr [], int si , int ei ) {         int pivot = arr [ ei ];         int i = si - 1 ;         for ( int j = si ; j < ei ; j ++ ) {             if ( arr [ j ] <= pivot ) {                 i ++ ;                 // swap                 int temp = ...

merge sort

  public class mergesort {     public static void print ( int arr []) {         for ( int i = 0 ; i < arr . length ; i ++ ) {             System . out . print ( arr [ i ] + " " );         }         System . out . println ();     }     public static void mergesort ( int arr [], int si , int ei ) {         int mid = si + ( ei - si ) / 2 ;         if ( si >= ei ) {             return ;         }         mergesort ( arr , si , mid ); // (si+ei)/2         mergesort ( arr , mid + 1 , ei ); // left part         mergesort ( arr , mid + 1 , ei ); // right part         merge ( arr , si , mid , ei );     }     public static void merge ( int arr...

finding the length of a string using recursion

  public class practice3 {     public static int length ( String str ) {         if ( str . length () == 0 ) {             return 0 ;         }         return length ( str . substring ( 1 )) + 1 ;     }     public static void main ( String [] args ) {         String str = "abcab" ;         System . out . println ( length ( str ));     } }

digits to strings

  //   I/P:1947 //   O/P:ONE NINE FOUR SEVEN public class practice2 {     static String digits [] = { "zero" , "one" , "two" , "three" , "four" , "five" , "six" , "seven" , "eight" , "nine" };     public static void printdigits ( int n ) {         if ( n == 0 ) {             return ;         }         int lastdigit = n % 10 ;         printdigits ( n / 10 );         System . out . println ( digits [ lastdigit ]);     }     public static void main ( String [] args ) {         printdigits ( 1234 );     } }

printing the indices of a key in an array

  //PRINTING THE INDICES OF A KEY IN AN ARRAY public class practice1 {     public static void printind ( int key , int arr [], int index ) {         if ( index == arr . length ) {             return ;         }         if ( arr [ index ] == key ) {             System . out . println ( index );         }         printind ( key , arr , index + 1 );     }     public static void main ( String [] args ) {         int arr [] = { 3 , 2 , 4 , 5 , 6 , 2 , 7 , 2 , 2 };         printind ( 2 , arr , 0 );     } }

print binary strings withoout consecutive 1's

  //PRINT BINARY SGTRINGS WITHOUT CONSECUTIVE 1'S public class printbin_strings {     public static void print ( int n , int lastplace , String str ) {         if ( n == 0 ) {             System . out . println ( str );             return ;         }         print ( n - 1 , 0 , str + "0" );         if ( lastplace == 0 ) {             print ( n - 1 , 1 , str + "1" );         }     }     public static void main ( String [] args ) {         print ( 3 , 0 , "" );     } }

friends pairing

  public class friendspairing {     public static int pairing ( int n ) {         if ( n == 1 || n == 2 ) {             return n ;         }         // single         int fnm1 = pairing ( n - 1 );         // pair         int fnm2 = pairing ( n - 2 );         int pairways = ( n - 1 ) * fnm2 ;         int totways = fnm1 + pairways ;         return totways ;     }     public static void main ( String [] args ) {         System . out . println ( pairing ( 3 ));     } }

tiling problem

  public class tiling {     public static int filling ( int n ) {         if ( n == 0 || n == 1 ) {             return 1 ;         }         int fnm1 = filling ( n - 1 ); // VERTICAL FILLING         int fnm2 = filling ( n - 2 ); // HORIZONTAL FILLING         int total = fnm1 + fnm2 ;         return total ;     }     public static void main ( String [] args ) {         System . out . println ( filling ( 6 ));     } }

x^n using recursion

  //x^n import java . util .* ; public class powerofn {     public static int power ( int x , int n ) {         int xnm1 = ( int ) Math . pow ( x , n - 1 );         int xn = x * xnm1 ;         return xn ;     }     public static void main ( String [] args ) {         System . out . println ( power ( 5 , 3 ));     } }

finding the last occurence of an element in an array using reecursion

  public class lastoccurence {     public static int last ( int arr [], int key , int i ) {         if ( i == arr . length ) {             return - 1 ;         }         int found = last ( arr , key , i + 1 );         if ( arr [ i ] == key && found == - 1 ) {             return i ;         }         return found ;     }     public static void main ( String [] args ) {         int arr [] = { 12 , 3 , 5 , 6 , 7 , 10 , 2 , 5 , 4 };         System . out . println ( last ( arr , 5 , 0 ));     } }

finding the first occurence of a number in an array using recursion

  public class firstoccurence {     public static int first ( int arr [], int i , int key ) {         if ( arr [ i ] == key ) {             return i ;         }         return first ( arr , i + 1 , key );     }     public static void main ( String [] args ) {         int arr [] = { 7 , 8 , 9 , 3 , 5 , 6 , 8 , 5 };         System . out . println ( first ( arr , 0 , 5 ));     } }