`

经典排序算法 - 桶排序Bucket sort

阅读更多

1,桶排序是稳定的

2,桶排序是常见排序里最快的一种,比快排还要快…大多数情况下

3,桶排序非常快,但是同时也非常耗空间,基本上是最耗空间的一种排序算法

 

无序数组有个要求,就是成员隶属于固定(有限的)的区间,如范围为[0-9](考试分数为1-100等)

 

例如待排数字[6 2 4 1 5 9]

准备10个空桶,最大数个空桶

[6 2 4 1 5 9] 待排数组

[0 0 0 0 0 0 0 0 0 0] 空桶

[0 1 2 3 4 5 6 7 8 9] 桶编号(实际不存在)

 

1,顺序从待排数组中取出数字,首先6被取出,然后把6入6号桶,这个过程类似这样:空桶[ 待排数组[ 0 ] ] = 待排数组[ 0 ]

[6 2 4 1 5 9] 待排数组

[0 0 0 0 0 0 6 0 0 0] 空桶

[0 1 2 3 4 5 6 7 8 9] 桶编号(实际不存在)

 

2,顺序从待排数组中取出下一个数字,此时2被取出,将其放入2号桶,是几就放几号桶

[6 2 4 1 5 9] 待排数组

[0 0 2 0 0 0 6 0 0 0] 空桶

[0 1 2 3 4 5 6 7 8 9] 桶编号(实际不存在)

 

3,4,5,6省略,过程一样,全部入桶后变成下边这样

[6 2 4 1 5 9] 待排数组

[0 1 2 0 4 5 6 0 0 9] 空桶

[0 1 2 3 4 5 6 7 8 9] 桶编号(实际不存在)

 

0表示空桶,跳过,顺序取出即可:1 2 4 5 6 9

 

C#代码演示

//待排数组
 
var unsorted = new int[] { 6, 2, 4, 1, 5, 9 };
 
//分配空桶
var bucket = new int[10];
 
//直接以每个待排数字为索引,将自己的值赋值给当前桶
for (int i = 0; i < unsorted.Length; i++)
{
     bucket[unsorted[i]] = unsorted[i];
}
 
//跳过值为0的空桶,顺序输出即可
for (int i = 0; i < bucket.Length; i++)
{
    if (bucket[i] > 0)
    Console.WriteLine(bucket[i]);
}

 

分享到:
评论

相关推荐

    经典算法的C#源码实现

    经典排序算法 - 桶排序Bucket sort 经典排序算法 - 插入排序Insertion sort 经典排序算法 - 基数排序Radix sort 经典排序算法 - 鸽巢排序Pigeonhole sort 经典排序算法 - 归并排序Merge sort 经典排序算法 - ...

    详解Java常用排序算法-桶排序

    在上面的代码中,`bucketSort` 函数接受一个整数数组和桶的大小作为输入,并使用桶排序算法对该数组进行排序。该函数首先找到输入数组中的最小值和最大值,并计算桶的个数。然后,该函数创建一个大小为桶的个数的桶...

    排序算法-桶排序

    **桶排序(Bucket Sort)**是一种分布式的排序算法,它将待排序的数据分布到多个“桶”中,每个桶内部再分别进行排序,最后再依次处理每个桶中的数据,达到整体排序的目的。桶排序通常适用于数据分布较为均匀的情况...

    桶排序_BUCKETSORT

    提供的`bucketSort.cc`文件可能包含一个桶排序的C++实现,通过阅读源代码,你可以深入理解桶排序的具体步骤和细节,包括映射函数的设计、桶的创建和数据的分布等。 桶排序是一种非常实用的排序算法,尤其在处理大...

    排序算法-基于C语言实现的排序算法之BucketSort实现.zip

    在本主题中,我们将深入探讨一种特殊的排序算法——**BucketSort(桶排序)**,并将其与C语言的实现相结合。 **BucketSort**是一种分布式排序算法,其核心思想是将待排序的数据分布到若干个有序的“桶”中,每个桶...

    算法-理论基础- 排序- 桶排序(包含源程序).rar

    桶排序(Bucket Sort)是一种分布式排序算法,它将要排序的数据分布到多个“桶”中,每个桶再分别进行排序,最后将所有桶中的数据合并,得到全局有序的结果。桶排序的基本思想是假设输入数据服从均匀分布,通过将...

    sort-使用C++实现的排序算法之BucketSort.zip

    **桶排序(Bucket Sort)**是一种分布式的排序算法,它将待排序的数据分到几个有序的桶里,每个桶再分别排序,最后把各个桶中的数据合并成整体有序序列。这种算法适用于数据分布均匀的情况,如果数据在输入时已经...

    桶排序-解决排序问题

    桶排序(Bucket Sort)是一种分布式排序算法,常用于大数据处理和流式计算中。它将待排序的数据分布到多个“桶”中,每个桶再独立地进行排序,最后按照桶的顺序依次取出桶中的元素,形成有序序列。桶排序的核心思想...

    全面的算法代码仓库全面的算法代码仓库

    桶排序 Bucket-Sort 笛卡尔树 Cartesian-Tree 求解多边形的重心 Centre-of-Gravity(Polygon) 组合数的递推求解 Combination(Recursion) 枚举组合 Combination 基本的复数类 Complex-Number 割点

    桶排序(Bucket Sort)

    桶排序算法是一种基于计数的排序算法,其基本思想是先扫描一遍待排序的序列,找出最大值和最小值,然后根据最大值和最小值确定桶的个数,并将每个元素分配到对应的桶中,最后将每个桶中的元素进行排序,然后依次输出...

    排序算法-java实现

    7. **计数排序**(Counting Sort)、**桶排序**(Bucket Sort)和**基数排序**(Radix Sort):这三种排序算法属于非比较型排序,适用于特定类型的数据。例如,基数排序适用于整数排序,根据每一位进行排序。它们的...

    iOS桶排序算法

    桶排序(Bucket Sort)是一种分布式排序算法,它将要排序的数据分布到多个“桶”中,每个桶再分别进行排序,最后将所有桶中的数据合并,得到全局有序的结果。在iOS开发中,桶排序可以被用于优化大规模数据的排序过程...

    详解Bucket Sort桶排序算法及C++代码实现示例

    桶排序(Bucket Sort)是一种非比较型的排序算法,它基于分布排序的原理,通过将待排序的数据分到几个有序的桶里,每个桶再分别排序,最后将所有桶中的数据合并成一个有序序列。这种算法特别适用于数据分布均匀的...

    Java排序算法(桶排序,基数排序等)

    8. 桶排序(Bucket Sort) 桶排序假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再单独排序,最后合并所有桶的排序结果。桶排序的时间复杂度可以达到线性O(n + k),其中k是桶的数量。Java实现如下(未...

    桶排序算法

    桶排序(Bucket Sort)是一种分布式排序算法,它将要排序的数据分布到多个“桶”中,每个桶再分别进行排序,最后将所有桶中的数据合并,得到全局有序的结果。桶排序算法基于分治策略,其核心思想是将待排序序列均匀...

    AlgorithmMan by Iori(Bucket Sort)

    BucketSort为AlgorithmMan中的桶排序演示工具(这是可执行文件;需要.net 4.0支持;非源代码)。 原文:C#算法设计排序篇之10-桶排序(附带动画演示程序) 链接:...

    Java实现桶排序算法(源代码)

    - 桶排序是一种非常规的排序算法,其实现较为复杂,不如其他一些经典排序算法直观易懂。 #### Java实现示例 下面是一个具体的Java实现示例: ```java import java.util.ArrayList; import java.util.Collections;...

    基于java语言十大经典排序算法

    9. **桶排序(Bucket Sort)** 桶排序将元素分布到有限数量的桶里,每个桶再分别排序,最后将所有桶中的元素合并。适用于数据均匀分布的情况。 10. **基数排序(Radix Sort)** 基数排序根据数字的每一位进行排序,先...

    桶排序算法的实现与比较

    桶排序(Bucket Sort)是一种分布式排序算法,它将要排序的数据分布到多个“桶”中,每个桶再分别进行排序,最后将所有桶中的数据合并,得到全局有序的结果。桶排序算法的时间复杂度在最理想情况下可以达到线性的O(n...

Global site tag (gtag.js) - Google Analytics