桶排序

2017-06-27  本文已影响12人  幻想无极
#include <stdio.h>

int main(int argc, const char * argv[]) {
    
    //book1维数组,t:输入的几个数的下标,n:总数量
    int book[1001],i,j,t,n;
    for(i = 0;i <= 1000;i++){
        //初始为0
        book[i] = 0;
    }
    //输入一个数n,表示接下来有n个数
    scanf("%d",&n);
    
    for (int i = 0; i < n; i++) {
        //把每一个数读到变量t中
        scanf("%d",&t);
        //进行计数,对编号为t的桶放一个小旗子
        book[t]++;
    }
//从高到低
//    for(i = 1000;i >= 0;i--){
//        printf("%d ",i);
//        
//        //j=1,book数组中默认的装的是0所以正常再没有录入数字的位置j>book[i],只有录入了数字的才会打印信息
//        for(j = 1;j <= book[i];j++){
//            printf("\n------%d\n ",i);
//            printf("-------个数%d\n",book[i]);
//        }
//    }
//从低到高
    for(i = 0;i <= 1000;i++){
        printf("%d ",i);
        
        //j=1,book数组中默认的装的是0所以正常再没有录入数字的位置j>book[i],只有录入了数字的才会打印信息
        for(j = 1;j <= book[i];j++){
            printf("\n------%d\n ",i);
            printf("-------个数%d\n",book[i]);
        }
    }
    
    getchar();
    
    return 0;
}

原理:创建一个总个数的数组,将里面的元素都置为0,输入总个数范围内的数,将下标为该数的元素值+1,排序的时候判断数组总下标为输入的一些数的元素值是否大于1,如果大于则执行,则完成了简单桶排序

上一篇 下一篇

猜你喜欢

热点阅读