排序算法(c语言描述)

来源:互联网 发布:java socket 发送心跳 编辑:程序博客网 时间:2024/04/27 15:45

冒泡排序:

#include<stdio.h>

int main()

{

    int a[5],i;

    void bubblesort(int a[],int n);

    for(i=0;i<5;i++)

    scanf("%d",&a[i]);

    bubblesort(a,5);

    for(i=0;i<5;i++)

    printf("%d",a[i]);

    printf("/n");

    return 0;

}

void bubblesort(int a[],int n)

{

     int i,j,temp;

     for(i=0;i<n-1;i++)

     for(j=i+1;j<n;j++)

     {

                       if(a[i]>=a[j])

                       {

                                     temp=a[i];

                                     a[i]=a[j];

                                     a[j]=temp;

                       }

     }

}

插入排序:

#include<stdio.h>

int main()

{

    int a[5],i;

    void insertionsort(int a[],int n);

    for(i=0;i<5;i++)

    scanf("%d",&a[i]);

    insertionsort(a,5);

    for(i=0;i<5;i++)

    printf("%d",a[i]);

    return 0;

}

void insertionsort(int a[],int n)

{

     int i,j,key;

     for(j=1;j<n;j++)

     {

                     key=a[j];

                     i=j-1;

                     while(i>=0&&a[i]>key)

                     {

                                          a[i+1]=a[i];

                                          i--;

                     }

                     a[i+1]=key;

     }

}

合并排序:
#include<stdio.h>
int main()
{
    int a[5],i;
    for(i=0;i<=4;i++)
    scanf("%d",&a[i]);
    void mergesort(int a[],int p,int r);
    mergesort(a,0,4);
    for(i=0;i<=4;i++)
    printf("%d",a[i]);
    return 0;
}
void mergesort(int a[],int p,int r)
{
     void merge(int a[],int p,int q,int r);
     int q;
     if(p<r)
     {
            q=(p+r)/2;
            mergesort(a,p,q);
            mergesort(a,q+1,r);
            merge(a,p,q,r);
     }
}
void merge(int a[],int p,int q,int r)
{
     int n1,n2,i,j,k,L[10],R[10];
     n1=q-p;
     n2=r-q-1;
     for(i=0;i<=n1;i++)
     L[i]=a[i+p];
     for(j=0;j<=n2;j++)
     R[j]=a[q+j+1];
     i=0;
     j=0;
     L[n1+1]=65535;
     R[n2+1]=65535;
     for(k=p;k<=r;k++)
     {
                      if(L[i]<=R[j])
                      a[k]=L[i++];
                      else
                      a[k]=R[j++];
     }
}

原创粉丝点击