Searching and Sorting

Table of contents

  1. Write a program to search an element in array using linear search.

     import java.util.*;
    
     public class Main {
       public static int linearSearch(int arr[], int key){
         int n=arr.length;
         for(int i=0; i<n;i++){
           if(arr[i]==key){
             return i;
           }
         }
         return -1;
       }
         public static void main(String[] args) {
           int arr[]={5,3,7,1,4,6};
           int key=6;
           System.out.println(linearSearch(arr,key));
       }
     }
    

  2. Write a program to search an element in sorted array using binary search.

     public class Main { 
         public static int binarySearch(int arr[], int key){ 
             int n= arr.length;
             int start=0; int end= n-1;
             int mid= (start+end)/2; 
             while(start<=end){
                 if(arr[mid]==key)
                 { return mid; }
                 else if(arr[mid]<key)
                 { start=mid+1; }
                 else if(arr[mid]>key)
                 { end= mid-1; }
             } return -1; 
         } 
         public static void main(String[] args)
         {
             int arr[]={1,3,4,5,6,7};
             int key= 4; 
             System.out.println(binarySearch(arr,key)); 
         } 
     }
    
  3. Write a program to sort an array using bubble sort.

     public class Test {
       public static void sort(int arr[]) {
         int n = arr.length;
         boolean swapped;
         for (int i = 0; i < n - 1; i++) {
           swapped=false;
           for (int j = 0; j < n - 1 - i; j++) {
             if (arr[j] > arr[j + 1]) {
               int temp = arr[j];
               arr[j] = arr[j + 1];
               arr[j + 1] = temp;
               swapped = true;
             }
           }
           if(swapped==false)
             break;
         }
       }
    
       public static void print(int arr[]) {
         int n=arr.length;
         for (int i = 0; i < n; i++) {
           System.out.print(arr[i] + " ");
         }
       }
       public static void main(String[] args) {
         int arr[] = { 4, 1, 6, 3, 2, 0 };
         sort(arr);
         print(arr);
       }
     }
    

  4. Write a program to sort an array using selection sort.

    Idea:- pick the smallest number from unsorted array and place it at the beginning

    
     public class Test {
       public static void sort(int arr[]) {
         int n = arr.length;
         for (int i = 0; i < n - 1; i++) {
           int min = i;
           for (int j = i + 1; j < n; j++) {
             if (arr[min] > arr[j]) {
               min = j;
             }
           }
           int temp = arr[min];
           arr[min] = arr[i];
           arr[i] = temp;
         }
       }
    
       public static void print(int arr[]) {
         int n = arr.length;
         for(int i=0; i<n;i++){
           System.out.print(arr[i] + " ");
         }
       }
       public static void main(String[] args) {
         int arr[] = { 6, 5, 7, 3, 1, 9, 8, 0 };
         sort(arr);
         print(arr);
       }
     }
    

  5. Write a program to sort an array using insertion sort.

    Idea:- Pick an element (from unsorted part) and place in right position in sorted part

     public class InsertionSort {
       public static void insertionSort(int arr[]) {
         for (int i = 1; i < arr.length; i++) {
           int curr = arr[i];
           int prev = i - 1;
           //finding the correct position to insert
           while (prev >= 0 && arr[prev] > curr) {
             arr[prev + 1] = arr[prev];
             prev--;
           }
           //insertion
           arr[prev + 1] = curr;
         }
       }
    
       public static void printArray(int arr[]) {
         for (int i = 0; i < arr.length; i++) {
           System.out.print(arr[i] + " ");
         }
       }
       public static void main(String[] args) {
         int arr[] = { 5, 4, 1, 3, 2 };
         insertionSort(arr);
         printArray(arr);
       }
     }
    

  6. Write a program to sort an array using counting sort.

     public class Test {
       public static void Sort(int arr[]) {
         int n = arr.length;
         int largest = Integer.MIN_VALUE;
         for (int i = 0; i < n; i++) {
           if (arr[i] > largest) {
             largest = arr[i];
           }
         }
         int count[] = new int[largest + 1];
         int m = count.length;
         for (int i = 0; i < n; i++) {
           count[arr[i]]++;
         }
         int j = 0;
         for (int i = 0; i < m; i++) {
           while (count[i] > 0) {
             arr[j] = i;
             j++;
             count[i]--;
           }
         }
       }
    
       public static void print(int arr[]) {
         int n = arr.length;
         for (int i = 0; i < n; i++) {
           System.out.print(arr[i] + " ");
         }
       }
       public static void main(String[] args) {
         int arr[] = {1,4,1,3,2,4,3,7};
         Sort(arr);
         print(arr);
       }
     }
    

  7. Write a program to sort an array using inbuilt sort method.

     import java.util.*;
     public class Main
     {
         public static void printArrayIncreasing(int arr[]){
             for(int i=0; i<arr.length;i++){
                 System.out.print(arr[i]+" ");
             }
         }
         public static void printArrayDecreasing(Integer arr[]){
             for(int i=0; i<arr.length;i++){
                 System.out.print(arr[i]+" ");
             }
         }
         public static void main(String[] args) {
             int arr[]={32,33,11,3,5,66};
             Integer arr1[]={32,33,11,3,5,66};
             Arrays.sort(arr);
             printArrayIncreasing(arr);//Increasing order
             Arrays.sort(arr1, Collections.reverseOrder());//Decreasing Order
             System.out.println();
             printArrayDecreasing(arr1);
         }
     }