/** * Sorting algorithms */ package com.anuragkapur.sorting; /** * Insertion Sort * * @author anurag.kapur */ public class InsertionSort { public void sort(int a[]) { if(a == null || a.length <= 1) { return; } insertNumberAtIndexInSortedArray(a, 1); } private void insertNumberAtIndexInSortedArray(int a[], int index) { if (index == a.length) { return; } int number = a[index]; int i; for (i=index-1; i >= 0; i--) { if (number < a[i]) { a[i+1] = a[i]; } else { break; } } a[i+1] = number; insertNumberAtIndexInSortedArray(a, index+1); } /** * Iterative version of insertion sort. * * Running time: * Best case: O(n) * Worst Case: O(n^2) * * @param args */ public static void main(String[] args) { // Array of numbers to sort int a[] = {5,1,4,3,8,6,9,10,7,2}; // Insertion sort algo for (int i = 1; i < a.length; i++) { int key = a[i]; int j = i - 1; while(j >= 0 && a[j] > key) { a[j + 1] = a[j]; j --; } a[j + 1] = key; } // Output the sorted array for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } } }