一、算法描述
- 第一个数是默认排序好的,先把第一个数储存起来,再第二个数与第一个数进行比较,如果第二个数较小,就把第一个数赋给第二个数,把原先第二个数的值赋给第一个数
- 以此类推,前面的数都是排序好的
- 直到n-1次遍历,算法完成
二、插入排序代码
void insert(int a[],int n)
{
int i,j,temp;
for(i=1;i<n;i++)
{
temp = a[i];
for(j=i-1;j>=0&&temp<a[j];j--)
a[j+1] = a[j];
a[j+1] = temp;
}
}
三、检测代码
#include<stdio.h>
void insert(int a[],int n)
{
int i,j,temp;
for(i=1;i<n;i++)
{
temp = a[i];
for(j=i-1;j>=0&&temp<a[j];j--)
a[j+1] = a[j];
a[j+1] = temp;
}
}
int main()
{
int n,i;
printf("请输入需要排序的数的个数:\n");
scanf("%d",&n);
int a[n];
printf("请输入需要排序的数:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
insert(a,n);
printf("插入排序的结果:\n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
}