/*
插入排序:
1.将数组a[0],a[1]从小到大排序
2.将a[2],插入到a[0],a[1]从小到大排序
3. ------
*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define SIZE 10
void InsertionSort(int *a,int len)
{
int i,j,t,h;
for(i=1;i<len;i++)
{
t=a[i];
j=i-1;
while(j>=0&&t<a[j]) //插入的数据从右边向左依次插入
{
a[j+1]=a[j];
j--;
}
a[j+1]=t;
printf("第%d步排序结果:",i);
for(h=0;h<len;h++)
{
printf("%d ",a[h]);
}
printf("\n");
}
}
void main()
{
int array[SIZE],i;
srand(time(NULL));
for(i=0;i<SIZE;i++)
{
array[i]=rand()%101 +1; //1-100
}
printf("排序前:\n");
for(i=0;i<SIZE;i++)
{
printf("%d ",array[i]);
}
printf("\n");
InsertionSort(array,SIZE);
printf("排序后:\n");
for(i=0;i<SIZE;i++)
{
printf("%d ",array[i]);
}
printf("\n");
}