算法描述:
共有n个元素,从第一个元素开始,把该元素为定位已排序,下一个元素和前面的元素进行比较,如果比前面的元素大,将该元素移到下一位。如果比前面的元素小,元素插入到该位置。
排序过程
时间复杂度
时间复杂度O(n^2)
空间复杂度O(1)
稳定
特点:越有序越快,完全有序为O(n)
算法实现
#include <stdio.h>
void InsertSort01(int *arr,int len)//O(n^2),O(1),稳定,
{
int i;
int j;
int tmp;
for(i=1;i<len;i++)
{
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;
}
}
void show(int *arr,int len)
{
for(int i=0;i<10;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
int main()
{
int arr[]={2,9,12,3,4,25,14,13,16,6};
InsertSort01(arr,sizeof(arr)/sizeof(arr[0]));
show(arr,sizeof(arr)/sizeof(arr[0]));
return 0;
}