#include <stdio.h>
#include <stdlib.h>
//严格按照算法写
void InsertSort1(int a[],int len)
{
int i,j,k,temp;
for(i=1;i<len;i++)
{
for(j=i-1;j>=0;j--)
if(a[j]<a[i])
break;
if(j!=i-1)
{
temp=a[i];
for(k=i-1;k>j;k--)
a[k+1]=a[k];
a[k+1]=temp;
}
}
}
//边搜索边排序
void InsertSort2(int a[],int len)
{
int i,j,temp;
for(i=1;i<len;i++)
{
if(a[i]<a[i-1])
{
temp=a[i];
for(j=i-1;j>=0 && a[j]>temp;j--)
a[j+1]=a[j];
a[j+1]=temp;
}
}
}
//边搜索边交换
void InsertSort3(int a[],int len)
{
int i,j,temp;
for(i=1;i<len;i++)
{
for(j=i-1; j>=0 && a[j]>a[j+1]; j--)
{
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
int main(int argc, char *argv[])
{
int i;
int a[]={4,5,2,6,9,7,5,74,56,89,132};
int b[]={4,5,2,6,9,7,5,74,56,89,132};
int c[]={4,5,2,6,9,7,5,74,56,89,132};
InsertSort1(a,11);
for(i=0;i<11;i++)
printf("%d ",a[i]);
printf("\n");
InsertSort2(b,11);
for(i=0;i<11;i++)
printf("%d ",b[i]);
printf("\n");
InsertSort3(c,11);
for(i=0;i<11;i++)
printf("%d ",c[i]);
printf("\n");
system("PAUSE");
return 0;
}
直接插入排序
最新推荐文章于 2024-03-19 18:50:33 发布