//插入排序的最大特点:越有序越快,完全有序则为O(n
(1)对于五个关键字,由于第一个关键字不用做插入处理,因此只需要插入4次插入操作。同理对于待排序的关键字序列a,第i个关键字用ai表示,其具有n个关键字,则需要n-1次处理。
(2)当插入第i个关键字ai时候,需要和前一个i-1个关键字作比较,这个关键字用aj表示(1<=j<i),若ai<aj,则把aj向后移动一个位置,即aj+1=aj,若发现ai>=aj,则可以直接插入,即aj+1=ai,同时结束比较。
void InsertSort(int *arr,int len)//O(n^2),O(1),稳定,
{
int tmp;
int i;
int j;
for(i=1;i<len;i++)//1 2 3 4 5
{
tmp = arr[i];
for(j=i-1;j>=0;j--)
{
if(arr[j] <= tmp)
{
break;
}
else
{
arr[j+1] = arr[j];
}
}
arr[j+1] = tmp;
}
}