美文网首页
算法-桶排序(简化版)

算法-桶排序(简化版)

作者: 逍然 | 来源:发表于2016-04-12 16:53 被阅读66次

    今天开始研究算法,网上找了本书《啊哈,算法》,准备把这本有趣的书研究个透彻,有些图是引用书中的图,在此声明一下。不说了,上第一种算法:桶排序

    int main(int argc, const char * argv[]) {

    @autoreleasepool {

    //排序法

    int a[11],t;

    for (int i=0; i<=10; i++) {// 初始化数组元素,都为0,可把每个元素当做一个桶,且桶里都为0

    a[i] = 0;

    }

    for (int i=1; i<=5; i++) {//输入五个[0,10]的数,把输入的数分别放入对应的桶中

    printf("请输入第%d个数:",i);

    scanf("%d",&t);

    a[t]++;

    }

    printf("由小到大排序后:");

    for (int i=0; i<=10; i++) {//依次判断a[0]-a[10]

    for (int j=1; j<=a[i]; j++) {//出现几次就打印几次

    printf("%d ",i);

    }

    }

    printf("\n由大到小排序后:");

    for (int i=10; i>=0; i--) {

    for (int j=1; j<=a[i]; j++) {

    printf("%d ",i);

    }

    }

    printf("\n");

    /*

    请输入第1个数:5

    请输入第2个数:4

    请输入第3个数:9

    请输入第4个数:7

    请输入第5个数:2

    由小到大排序后:2 4 5 7 9

    由大到小排序后:9 7 5 4 2

    */

    }

    return 0;

    }

    小结:

    优点:速度快

    缺点:占内存空间,假如需要对千万个数进行排序,那就要申请千万个变量,又或者需要给199999、323、1、89、101进行排序,那就要定义int a[200000]了,浪费空间,再者如果去对1.2,2.3,10.4,3.9,1.8进行排序,这个排序法就无法排序了。

    故此算法适合小范围整数排序。

    相关文章

      网友评论

          本文标题:算法-桶排序(简化版)

          本文链接:https://www.haomeiwen.com/subject/aqkwlttx.html