Insertion_Sort :
C# Source:
static public void InsertionSort(Int32[] A)
{
for(Int32 j=1;j<A.Length;j++)
{
Int32 key = A[j];
Int32 i = j-1;
while (i >= 0 && A[i] > key)
{
A[i + 1] = A[i];
i = i - 1;
}
A[i + 1] = key;
}
}
For Example:
Input a sequence:<5 2 4 6 1 3>
Process it like this:
j==1 key =2
i=0 <5 5 4 6 1 3>
i=-1<2 5 4 6 1 3>
J==2 key = 4
i=1 <2 5 5 6 1 3>
i=0 <2 4 5 6 1 3>
J==3 key = 6
I=2 <2 4 5 6 1 3>
J==4 key = 1
I=3 <2 4 5 6 6 3>
I=2 <2 4 5 5 6 3>
I=1 <2 4 4 5 6 3>
I=0 <2 2 4 5 6 3>
I= -1 <1 2 4 5 6 3>
……
Will get :<1 2 3 4 5 6 >
Just Like:
Insertion sort works the way many people sort a hand of playing cards. We start with an empty left hand and the cards face down on the table. We then remove one card at a time from the table and insert it into the correct position in the left hand. To find the correct position for a card , we compare it with each of the cards already in the hand , from right to left.
Running time:
The best case occcurs if the array is already sorted.then,the best-case running time is :
an+b;If the array is in reverse order,then the worst case results.So ,the running time is
an*n + bn +c