基本流程:
1.首先将数组的前两个元素按从小到大进行比较交换
2.将数组第三个元素跟数组第一步排好前两个元素进行比较,将第三个元素插入到合适的位置(即按顺序从小到大的合适位置)
3.将数组第四个元素跟前三个排好的元素进行比较,将第四个元素插入到合适的位置
4.重复以上的过程直到最后一个元素插入到合适的位置,完成数组从小到大的顺序
//随机生成数组并实现插入排序
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define max 100
int shuzu[max]={'\0'};
void insert_max(int time1)
{
srand(time(NULL));
for(int i=0;i<time1;i++)
{
shuzu[i]=((rand()*3)/1000);
}
printf("数组:");
for(int time3=0;time3<time1;time3++)
{
printf("%d ",shuzu[time3]);
}
printf("\n");
}
void paixu(int *a,int time2)
{
int temp,k,j;
for(int i=0;i<time2-1;i++)
{
printf("第%d次排序:",i);
k=a[i+1];
j=i;
while(j>=0&&k<a[j])
{
a[j+1]=a[j];
j--;
}
a[j+1]=k;
for(int time3=0;time3<time2 ;time3++)
{
printf("%d ",a[time3]);
}
printf("\n");
}
}
int main()
{
int gs;
printf("输入需要插入排序数据个数:");
scanf("%d",&gs);
insert_max(gs);
paixu(shuzu,gs);
return 0;
}