桶分类 算法_桶分类算法

桶分类 算法

桶分类 (Bucket Sort)

Bucket sort is a sorting technique in which array is partitioned into the buckets. By this, each bucket will be sorted individually, by using some another sorting algorithm such as insertion sort. This sorting technique assumes that the input is drawn from a uniform distribution by which it has an average case of O(n). Bucket sort is a fast technique because bucket sort presumes that the input is generated by a process, which will distribute the element uniformly and independently over the interval.

存储桶排序是一种将数组划分为存储桶的排序技术。 这样,将使用其他一些排序算法(例如插入排序)分别对每个存储桶进行排序。 这种排序技术假定输入是从均匀分布中提取的,该输入的平均情况为O(n)桶分类是一种快速的技术,因为桶分类假定输入是由某个进程生成的,该输入将在间隔内均匀且独立地分配元素。

桶分类算法 (Algorithm for Bucket Sort)

  1. Set up an array of initially empty buckets.

    设置一系列最初为空的存储桶。

  2. Put the element in the corresponding bucket.

    将元素放入相应的存储桶中。

  3. Sort each non-empty bucket.

    对每个非空桶进行排序。

  4. Visit the bucket in order and put all the elements into a sequence and print them.

    按顺序访问存储桶,并将所有元素放入序列中并打印。

桶分类的伪代码 (Pseudo code for Bucket Sort)

void bucketsort (int a[ ], int n, int max)
{
int i,j=0;
//initialize each bucket 0 and then make bucket empty.
int* buckets = calloc(max+1, size of (int));
for(int i=0; i<n; i++)
buckets[a[i]]++;
//now sort each bucket individually.
//sequentially empty each bucket in some array.
for(i=0; i<max; i++)
while (buckets[i]--)
b[j++]=i;
//display the array b as sorted list of elements.
}

Example:

例:

Let us sort the elements by using bucket sort. Elements which need to be sort are 56, 12, 84, 28, 0,-13, 47, 94, 31, 12.

让我们使用存储桶排序对元素进行排序。 需要排序的元素是56,12,84,28,0,-13,47,94,31,12。

Step 1) First set up an array which is given below:

步骤1)首先建立一个数组,如下所示:

Bucket sort 1

Step 2) Now consider the range such that:

步骤2)现在考虑范围,使得:

-20 to -1, 0 to 10 10 to 20, 20 to 30, 30 to 40, 40 to 50, 50 to 60, 60 to 70, 70 to 80, 80 to 90, 90 to 100.

-20至-1、0至10 10至20、20至30、30至40、40至50、50至60、60至70、70至80、80至90、90至100。

Now we fill up each bucket by given elements,

现在,我们通过给定的元素填充每个存储桶,

Bucket sort 2

Step 3) Now sort the each bucket and then print the array by visiting each bucket sequentially.

步骤3)现在,对每个存储桶进行排序,然后依次访问每个存储桶以打印阵列。

Bucket sort 3

-13, 0, 12, 12, 28, 31, 47, 56, 84, 94

-13、0、12、12、28、31、47、56、84、94

This is the sorted list.

这是排序的列表。

桶分类的缺点 (Drawbacks of Bucket Sort)

  1. For the bucket sort, it’s the necessary part that the maximum value of the element must be known.

    对于存储桶排序,必须知道元素的最大值是必不可少的部分。

  2. In this type of technique, we have to create enough buckets in the memory for every element, to place in the array.

    在这种技术中,我们必须在内存中为每个元素创建足够的存储桶,以放置在数组中。

桶排序分析 (Analysis of the bucket Sort)

Average case, best case, and worst case time complexity of this algorithm is O(n).

该算法的平均情况,最佳情况和最坏情况的时间复杂度为O(n)

翻译自: https://www.includehelp.com/algorithms/bucket-sort-algorithm.aspx

桶分类 算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度之星初赛(A)——T5

今夕何夕 Problem Description今天是2017年8月6日&#xff0c;农历闰六月十五。 小度独自凭栏&#xff0c;望着一轮圆月&#xff0c;发出了“今夕何夕&#xff0c;见此良人”的寂寞感慨。 为了排遣郁结&#xff0c;它决定思考一个数学问题&#xff1a;接下来最近的哪一年里的同…

mycat 不得不说的缘分

1&#xff0c;愕然回首。它在灯火阑珊处关于mysql集群中间件。曾经写在应用程序里面&#xff0c;由开发者实现&#xff0c;在配置文件中面写多个数据源&#xff0c;写库一个数据源&#xff0c;读库一个数据源&#xff0c;笨拙不高效&#xff0c;由于程序猿的差异化。效果并非特…

python创建空元组_用Python创建空元组

python创建空元组Python | 空元组 (Python | empty tuple) In python, we can also create a tuple without having any element. An empty tuple is created using a pair of round brackets, (). 在python中&#xff0c;我们也可以创建一个没有任何元素的元组 。 使用一对圆括…

共享马扎的火爆,原来是一场营销!

如今&#xff0c;人们的生活仿佛已经被“共享化”&#xff1a;上班有共享单车、睡觉有共享床铺、商场有共享充电宝、去机场有共享巴士……好像除了男女朋友是自己的&#xff0c;其他都要共享了&#xff01;哎&#xff0c;不对&#xff01;前些日子&#xff0c;竟然还真有了共享…

什么是CDP(连续数据保护)?

CDP&#xff1a;连续数据保护 (CDP: Continuous Data Protection) CDP is an abbreviation of "Continuous Data Protection". It is also called as a real-time backup, is a system of data storage that backs up data in an organization or enterprise on a sy…

Git实战(二)原理

上次的博文Git实战&#xff08;一&#xff09;版本号控制概述中我们简介了一下版本号控制系统的概念&#xff0c;重点对版本号控制的三种类型进行了分析和对照&#xff0c;从本篇博文開始我们进入Git的世界&#xff0c;首先介绍一下Git实现版本号控制的原理。 Git与SVN等其它版…

什么是html的混杂模式_HTML的完整形式是什么?

什么是html的混杂模式HTML&#xff1a;超文本标记语言 (HTML: Hyper Text Markup Language) HTML is an abbreviation of Hypertext markup language. Hypertext markup language is a text based standard markup language used to create web pages and design documents whi…

PHP-Manual的学习----【语言参考】----【类型】-----【对象】

Object 对象1.对象初始化要创建一个新的对象 object &#xff0c;使用 new 语句实例化一个类&#xff1a; class foo{ function do_foo(){ echo "1111"; }}$bar new foo;echo $bar->do_foo();输出&#xff1a;1111注解&#xff1a;一个类可以初始化…

kotlin 两个数字相加_Kotlin程序交换两个数字

kotlin 两个数字相加Given two numbers, we have to swap them. 给定两个数字&#xff0c;我们必须交换它们。 Example: 例&#xff1a; Input:First number: 10Second number: 20Output:First number: 20Second number: 10To swap two numbers – here we are using third v…

Kotlin入门(14)继承的那些事儿

上一篇文章介绍了类对成员的声明方式与使用过程&#xff0c;从而初步了解了类的成员及其运用。不过早在《Kotlin入门(12)类的概貌与构造》中&#xff0c;提到MainActivity继承自AppCompatActivity&#xff0c;而Kotlin对于类继承的写法是“class MainActivity : AppCompatActiv…

在Scala中列出| 关于Scala列表的完整教程

Scala | 清单 (Scala | List) List in Scala is a collection that stores data in the form of a liked-list. The list is an immutable collection which means the elements of a list cannot be altered after the list is created. Lists are flexible with data types, …

MySQL单机多实例部署详解之------多实例分别定义不同的配置文件

mysql多实例安装---分别定义不同的配置文件1.安装MySQL需要的依赖包[rootMySQL ~]# yum install ncurses-devel libaio-devel cmake -y[rootMySQL ~]# rpm -qa ncurses-devel libaio-develncurses-devel-5.7-4.20090207.el6.x86_64libaio-devel-0.3.107-10.el6.x86_642.安装编译…

javascript模块_JavaScript中的模块

javascript模块JavaScript模块 (JavaScript Modules) One of the key features of programming fundamentals is breaking down your code into fragments. These fragments depending on its functionality have been coined various terms like functions, components, modul…

在mac上安装Docker

1.进入一下地址进行下载docker https://download.docker.com/mac/stable/Docker.dmg 进入后进行下载后进行安装 2.将其拖动到Appliaction中即可 3.第一打开会有一个这样的欢迎页面 3.检查是否安装完成 出现上图所示标示安装完成了

composer 检查镜像_检查N元树中的镜像

composer 检查镜像Problem statement: 问题陈述&#xff1a; Given two n-ary trees, the task is to check if they are mirrors of each other or not. 给定两个n元树&#xff0c;任务是检查它们是否互为镜像。 Note: you may assume that root of both the given tree as …

浪潮各机型前面板指示灯含义

NF560D2 NF3020M2 NF5020M3 NF5140M3 NF5212H2 NF5220 NF5224L2 NF5240M3 NF5270M3 NF5280M2 NF5280M3 NF5540M3 NF5580M3 NF8420M3 NF8520 NF8560M2 说明&#xff1a;转浪潮官网。

python dll 混合_Python | 条线混合图

python dll 混合In some of the cases, we need to plot a bar-line hybrid plot. This plot helps in a better understanding of dynamics as well as the relative magnitude of each point in the plot. Bar-Line Hybrid Plots are mostly used for the representation of …

测试八 赛后感受

测试八 当我打开T1的时候&#xff0c;就没有往下看题目了&#xff0c;主要是发现T1就是之前做过&#xff0c;而且我也看过题解的题目&#xff0c;接着就开始钻研&#xff0c;当然&#xff0c;也没什么好钻研的&#xff0c;大概思路还是知道的&#xff0c;再写写数据就已经很清晰…

推荐五个免费的网络安全工具

导读&#xff1a; 在一个完美的世界里&#xff0c;信息安全从业人员有无限的安全预算去做排除故障和修复安全漏洞的工作。但是&#xff0c;正如你将要学到的那样&#xff0c;你不需要无限的预算取得到高质量的产品。这里有SearchSecurity.com网站专家Michael Cobb推荐的五个免费…

bios部署模式审核模式_BIOS的完整形式是什么?

bios部署模式审核模式BIOS&#xff1a;基本输入输出系统 (BIOS: Basic Input Output System) BIOS is an abbreviation of the Basic Input Output System. In the beginning, when you first set on your computer, the first software which starts run by the computer is &…