插入排序分为直接插入排序和折半插入排序
插入排序:稳定,时间复杂度 O(n^2)
我们这次先来试试直接插入排序
#include<stdio.h>
void Print(int *a)//打印函数
{
for(int i=0;a[i]!='\0';i++)//打印每一次排序的结果
printf("%d ",a[i]);
printf("\n");//输个换行符
}
void Insert(int *a)
{
int j;
int k;
int temp = 0;
for(int i=1;a[i]!='\0';i++)//假设第一个元素已经是有序队列
{
for(j=0;j<i&&a[j]<a[i];)
j++;
printf("第%d次直接插入排序:",i);
if(i!=j)
{
temp = a[i];//运用中间变量temp进行交换
for(k = i-1;k>=j;k--)
a[k+1]=a[k];
a[j] = temp; //把中间变量给a[i];
}
Print(a);
}
}
int main()
{
int a[10]={1,3,5,7,9,2,4,6,8};
Print(a);
Insert(a);//进行插入排序
printf("直接插入排序结果如下:\n");
Print(a);
return 0;
}
然后继续第6次排序到最后,同样的方法,就排完了