Why does it call insert sort?
It's name contains the method it uses.
It's basic theory was so simple: Insert a element into a sorted list.
But how the sorted list basically initialize ---- build a list with only one element.
Here comes the code:
#include <stdio.h>
#include " type.h "
void InsertSort(SqList *L)
{
int i,j,com;
for( i= 1; i< L->length; i++)
{
if(L->data[i]<L->data[i- 1])
{
com = L->data[i];
for( j= i; com < L->data[j- 1] ; j--)
{
L->data[j]=L->data[j- 1];
}
L->data[j]= com;
}
}
}
void printContent(SqList *L)
{
for( int i = 0; i< L->length; i++)
{
printf( " %d \t ",L->data[i] );
}
}
int main( void)
{
SqList l ;
l.data[ 0] = 9;
l.data[ 1] = 1;
l.data[ 2] = 5;
l.data[ 3] = 8;
l.data[ 4] = 3;
l.data[ 5] = 7;
l.data[ 6] = 4;
l.data[ 7] = 6;
l.data[ 8] = 2;
l.length = 9;
printContent(&l);
printf( " \n ");
InsertSort(&l);
printContent(&l);
printf( " \n ");
return 0;
}
#include " type.h "
void InsertSort(SqList *L)
{
int i,j,com;
for( i= 1; i< L->length; i++)
{
if(L->data[i]<L->data[i- 1])
{
com = L->data[i];
for( j= i; com < L->data[j- 1] ; j--)
{
L->data[j]=L->data[j- 1];
}
L->data[j]= com;
}
}
}
void printContent(SqList *L)
{
for( int i = 0; i< L->length; i++)
{
printf( " %d \t ",L->data[i] );
}
}
int main( void)
{
SqList l ;
l.data[ 0] = 9;
l.data[ 1] = 1;
l.data[ 2] = 5;
l.data[ 3] = 8;
l.data[ 4] = 3;
l.data[ 5] = 7;
l.data[ 6] = 4;
l.data[ 7] = 6;
l.data[ 8] = 2;
l.length = 9;
printContent(&l);
printf( " \n ");
InsertSort(&l);
printContent(&l);
printf( " \n ");
return 0;
}
There are already one blog about Insert Sort.
It's complexity : worse : O(n2), but a litte better than select sort and bubble sort.