Write a program to implement insertion sort algorithm in java.  How insertion sort is different from bubble sort and selection sort.
Insertion sort is a simple sorting algorithm. It works by inserting each element at the proper place in a sorted list.
Insertion sort explanation.
Java programs
Output -
Enter the number of element in an array : 4
Enter unsorted values in an array :
12
5
9
2
After sorting an array :
2 5 9 12
Explanation
Suppose we have input following values.
12 5 9 2
Step 1 - 12 is compared with 5 and position is swapped.
After step 1 - 5 12 9 2
Step 2 - 9 is compared with 5 and 12 and position is swapped.
After step 2 - 5 9 12 2
Step 3 - 2 is compared with 5, 9 and 12 and position is swapped.
After step 3 - 2 5 9 12
You can also create separate method for insertion sort and sort the unsorted array. Here is the code snippet for sorting.
Insertion sort is a simple sorting algorithm. It works by inserting each element at the proper place in a sorted list.
Insertion sort explanation.
Java programs
Insertion Sort Program in Java
package insertionsort;
import java.util.*;
public class Insertionsort {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        
          int n;
          
          System.out.println("Enter the number of element in an array");
          
          Scanner in = new Scanner(System.in);
          n = in.nextInt();
          
          int[] arr = new int[n];
          
          System.out.println("Enter unsorted values in an array");
          
          int i, j ,k;
          
          /* Taking unsorted values from user */
          
          for (i = 0 ; i < n; i++) {
              
              arr[i] = in.nextInt();
              
          }
          
          /* Sorting values using insertion sort */
          
          for ( i = 1; i < n; i++) {
              
              k = arr[i];
              
              for (j = i - 1; j >= 0 && k < arr[j]; j-- ) {
                  
                    arr[j+1] = arr[j];
              }
              
              arr[j+1] = k;
          }
          
          System.out.println ("After sorting an array");
          
          for (j = 0; j < n; j++) {
              
              System.out.print(arr[j]+" ");
          }
    }
    
}
Output -
Enter the number of element in an array : 4
Enter unsorted values in an array :
12
5
9
2
After sorting an array :
2 5 9 12
Explanation
Suppose we have input following values.
12 5 9 2
Step 1 - 12 is compared with 5 and position is swapped.
After step 1 - 5 12 9 2
Step 2 - 9 is compared with 5 and 12 and position is swapped.
After step 2 - 5 9 12 2
Step 3 - 2 is compared with 5, 9 and 12 and position is swapped.
After step 3 - 2 5 9 12
You can also create separate method for insertion sort and sort the unsorted array. Here is the code snippet for sorting.
public static void insertionSort(int[] A){
        for(int i = 1; i < A.length; i++) {
            int value = A[i];
            int j = i - 1;
            while(j >= 0 && A[j] > value){
                A[j + 1] = A[j];
                j = j - 1;
            }
            A[j + 1] = value;
        }
        /* Assume this is the method which prints 
           the final sorted array */
        printArray(A);
    }
No comments:
Post a Comment