C语言最基础的排序方法,在课本上共有三种,第一种起泡法,第二种选择法,第三种插入法。
第一种:起泡法
#include<stdio.h>
void main()
{
int a[10]={9,56,3,8,10,5,3,4,2,1},i,j,t;
for(i=1;i<10;i++)
{
for(j=0;j<10-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
}
}
for(i=0;i<10;i++)
{
printf("%-3d",a[i]);
}
}
第二种:选择法
选择法1
#include<stdio.h>
void main()
{
int a[10]={9,56,3,8,10,5,3,4,2,1},i,j,t;
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0;i<10;i++)
{
printf("%-3d",a[i]);
}
}
选择法2
#include<stdio.h>
void main()
{
int a[10]={9,56,3,8,10,5,3,4,2,1},i,j,t,k;
for(i=0;i<9;i++)
{
k=i;
for(j=k+1;j<10;j++)
{
if(a[j]<a[k]) k=j;
}
if(k!=i)
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
for(i=0;i<10;i++)
{
printf("%-3d",a[i]);
}
}
插入法
#include<stdio.h>
void main()
{
int a[10]={9,56,3,8,10,5,3,4,2,1},i,j,t;
for(i=1;i<10;i++)
{
t=a[i];
for(j=i-1;j>=0;j--)
{
if(a[j]>t)
a[j+1]=a[j];
else break;
}
a[j+1]=t;
}
for(i=0;i<10;i++)
{
printf("%-3d",a[i]);
}
}