常用的排序算法

来源:互联网 发布:为什么何炅是Gay知乎 编辑:程序博客网 时间:2024/06/01 09:13

1.Bucket Sort:

#include<stdio.h>/*简化版桶排序*/ int book[11]={0};int main(int intval,char **charval){    int i,j,t;    printf("请输入0到10之间的5个数字数字:\n");     for(i=0;i<5;++i)    {        scanf("%d",&t);        book[t]++;    }    for(i=0;i<=10;++i)    {        if(book[i]==0)            continue;        for(j=0;j<book[i];++j)            printf("%-3d",i);       }    return 0;}

2.Buddle Sort:

#include<stdio.h>/*冒泡排序*/#define N 5int a[N]={0};void bubblesort(int left,int right)/*left为首元素下标,right为末元素下标*/ {    int i,j,temp;    for(i=left;i<=right;++i)        for(j=left;j<right;++j)            if(a[j]>a[j+1])            {                temp=a[j];                a[j]=a[j+1];                a[j+1]=temp;            }    return;     }int main(int intval,char **charval){    int i;    printf("请输入5个数:\n")    ;       for(i=0;i<N;++i)        scanf("%d",a+i);    bubblesort(0,N-1);    for(i=0;i<N;++i)        printf("%d  ",a[i]);    return 0;} 

3.Quick Sort:

#include<stdio.h>/*快速排序*/#define N 5int a[N];void quicksort(int left,int right)/*left为首元素下标,right为末元素下标*/{    int i,j,l,temp;    if(left>right)        return;     l=a[left];/*选择基准数*/     i=left;    j=right;    while(i!=j)    {        while(l<=a[j]&&i<j)            j--;        while(l>=a[i]&&i<j)            i++;        if(i<j)        {            temp=a[i];            a[i]=a[j];            a[j]=temp;          }           }    a[left]=a[i];/*下一轮基准数*/     a[i]=l;    quicksort(left,i-1);    quicksort(i+1,right);    return; }int main(int intval,char **charval){    printf("请输入5个数:\n");    for(int i=0;i<N;++i)        scanf("%d",a+i);    quicksort(0,N-1);    for(int i=0;i<N;++i)        printf("%d  ",a[i]);    putchar('\n');    return 0;   }

4.Selection Sort:

#include<stdio.h>/*选择排序*/#include<stdlib.h>#define N 5void selectionsort(int *p,int n){    int i,j,k,temp;    for(i=0;i<n-1;++i)    {        k=i;        for(j=i+1;j<n;++j)            if(p[j]<p[k])                k=j;        if(k!=i)        {            temp=p[k];            p[k]=p[i];            p[i]=temp;        }    }    return;}int main(int intval,char *charval[]){    int *num;    num=(int*)malloc(N*sizeof(int));    printf("输入五个数字\n");    register int i;    for(i=0;i<N;++i)        scanf("%d",num+i);    selectionsort(num,N);    printf("从小到大排序后\n");    for(i=0;i<N;++i)        printf("%-3d",*(num+i));    free(num);    printf("\n");    return 0;}
1 0
原创粉丝点击