Skip to main content

Insertion Sort in JAVA

What is insertion sort?

It is a sorting technique that is based on the partitioning of array into two parts like selection sort, sorted and unsorted.

The process is:-

compare adjacent elements.
if(left > right)
Swap the element
{
check for sorted array whether it is still in sort manner(put j=i and loop in until j is not equal to zero)
- No
check for if(right<left)
swap
do it until at the end of position.
}

Implementation:-

Underline eleemnts are part of sorted array

inside main array loop 14 27 10 33 35 19 42 4 (14 10 27 33 35 19 42 4 (here sorted array is distorted hence sorting has been done inside the loop)
    inside sorted array loop 10 14 27 33 35 19 42 4 
inside main array loop 10 14 27 33 35 19 42 4 
inside main array loop 10 14 27 33 35 19 42 4 
inside main array loop 10 14 27 33 35 19 42 4 
    inside sorted array loop 10 14 27 19 33 35 42 4 
    inside sorted array loop 10 14 19 27 33 35 42 4 
inside main array loop 10 14 19 27 33 35 42 4 
inside main array loop 10 14 19 27 33 35 42 4 
    inside sorted array loop 10 14 19 27 33 4 35 42 
    inside sorted array loop 10 14 19 27 4 33 35 42 
    inside sorted array loop 10 14 19 4 27 33 35 42 
    inside sorted array loop 10 14 4 19 27 33 35 42 
    inside sorted array loop 10 4 14 19 27 33 35 42 
    inside sorted array loop 4 10 14 19 27 33 35 42 
inside main array loop 4 10 14 19 27 33 35 42 (final sorted array)

Program:-


package sorting;

public class InsertionSort {

 //function to print array
   public static void print(int[] arr)
   {
    for(int i=0;i<=arr.length-1;i++)
     System.out.print(" "+arr[i]);
    System.out.println(" ");
   }
   
   //function to swap elements
   public static int[] swap(int[] arr,int i, int j)
   {
    int temp;
    temp=arr[i];
    arr[i]=arr[j];
    arr[j]=temp;
    
    return arr;
   }
  
  public static void main(String[] args)
  {
   int[] arr={14,27,10,33,35,19,42,4};
   int j;
   for(int i=0;i<arr.length-1;i++)
   {
    if(arr[i]>arr[i+1])
    {
     swap(arr,i,(i+1));
     j=i;
     for(;j>0;j--)
     {
      if(arr[j]<arr[j-1])
      {
       swap(arr,j,(j-1));
       System.out.print("    "+"inside sorted array loop");
       print(arr);
      }
     }
     
    }
    System.out.print("inside main array loop");
    print(arr);
   }
   
   
  }
}

Comments

.

Popular posts from this blog

Basics of System Design

This article is first one from the series of articles dedicated to system design interviews. Here i am going to present the base scenario to consider before starting to solve system design problems. Questions to ask? 1) what is the number of requests a website will recieve in a day/month/second? 2) what is the amount of memory a website will deal in a day/month/second? 3) what is the number of servers that can accomodate these requests? To answer this , first we need to remember the below numbers:- 1 million = 10 lakh = 1000000 = 10^6 1 billion = 1000 million = 10^9 1 KB = 1024 B = 10^3 1 MB= 10^6 = 1024 KB 1 GB= 10^9 = 1024 MB 1 TB = 10^12 = 1024 GB Memory we need to see in Bytes Requests we need to see in numbers example :- suppose a website recieves 100M requests every month then:- requests per day = request per month /24 = 416700 requests requests per second = requests per day / (24*360...

Delete node at a given position in Linked List

Delete node at a given position in Linked List //delete node by position in linked list public Node deleteKeyAtPosition ( Node head , int position ) { Node temp = head ; Node prevtemp = temp ; int c = 1 ; //if position is head if ( position == 1 ) { head = head . next ; return head ; } //position +1 because we have to go till that point while ( c != position + 1 ) { if ( c == position && position != 1 ) { prevtemp . next = temp . next ; temp . next = null ; temp = prevtemp ; } prevtemp = temp ; temp = temp . next ; c ++; } return head ; }