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]);
    }    
}