美文网首页算法
算法1 - 桶排序算法

算法1 - 桶排序算法

作者: 程序渣渣猿 | 来源:发表于2019-01-07 07:38 被阅读63次

桶排序算法是一种最快最简单的排序方法。

算法说明

举例说明:
例如当前有一个一维数组有几个数字例如(1-10)之间,我们如何才能最快速的将其从小到大排序呢?
简单的做法就是,初始化一个一维数组 a[11] 为 0 。 代表所有的数组都没有出现过。遍历随机数字,例如出现5 ,就改变 a[5] = 1,再次出现5那么a[5]=2,同理出现6,那么a[6]=1。

算法代码
void bucket_sort() {
    int a[11],i,j,t;
    
    for (i=0; i<11; i++) {
        a[i] = 0; // 初始化
    }
    
    printf("请输入数字\n");
    for (i=1; i<=5; i++) { // 循环读入5个数字
        scanf("%d",&t); // 把每一个数读入到变量t中
        a[t]++; // 进行计数
    }
    
    for (i=0; i<=10; i++) {
        for (j=1; j<=a[i]; j++) {
            printf("%d",i);
        }
    }
}

这种算法就好比我们这里有11个桶,编号从0-10开始。每出现一个数字,我们聚在对应编号的桶中做一个标志,最后我们只需要数数每个桶中间出现的标志就行。例如3号桶中有一个标志表示2出现了一次。


桶排序-01
算法时间复杂度

代码中第4行的循环一共循环了m次(m为桶的个数),
第9行的循环一种循环了n次(n为待排序的个数),
第14,15行一共循环了m+n次。
所以整个排序算法一共执行了 m+n+m+n 次。
该时间复杂度就是O(m+n+m+n) = O(2*(m+n)),我们在讲时间复杂度的时候可以忽略较小的常数,最终桶排序的时间复杂度为O(m+n)
即 桶排序的时间复杂度 O(M+N)

相关文章

  • 线性排序

    桶排序、计数排序、基数排序 一、线性排序算法介绍 1.线性排序算法包括桶排序、计数排序、基数排序。2.线性排序算法...

  • 浅谈排序算法

    排序算法有很多种,今天先谈谈一些简单的排序算法。包括桶排序、冒泡排序和快速排序算法。后期总结各种排序算法。 桶排序...

  • (转)排序算法

    排序算法点这里 数据结构与算法——计数排序、桶排序、基数排序

  • 11|线性排序:如何根据年龄给100万用户数据排序?

    一、线性排序算法介绍 1.线性排序算法包括桶排序、计数排序、基数排序。2.线性排序算法的时间复杂度为O(n)。3....

  • 排序算法(十一)桶排序

    排序算法(十一)桶排序   桶排序(Bucket sort)是计数排序改进版,同样属于非比较排序,该算法的基本思想...

  • 算法1 - 桶排序算法

    桶排序算法是一种最快最简单的排序方法。 算法说明 举例说明:例如当前有一个一维数组有几个数字例如(1-10)之间,...

  • 序言-算法

    此文集将介绍一些经典的算法,从经典的排序算法开始不定期的补充纠错更新 1、经典排序算法 1.1桶排序Bucket ...

  • 排序算法三(桶,计数,基数)

    桶排序,计数排序,基数排序算法的时间复杂度都是线性的,所以把这类排序算法叫作线性排序。 桶排序 概念:将要排序的数...

  • 线性排序

    一、线性排序算法介绍 线性排序算法包括桶排序、计数排序、基数排序。 线性排序算法的时间复杂度为O(n)。 此3种排...

  • 桶排序、计数排序、基数排序

    一、线性排序算法介绍 线性排序算法包括桶排序、计数排序、基数排序。 线性排序算法的时间复杂度为O(n)。 此3种排...

网友评论

    本文标题:算法1 - 桶排序算法

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