桶分类 算法_桶分类算法

桶分类 算法

桶分类 (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;接下来最近的哪一年里的同…

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

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

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…

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

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

在mac上安装Docker

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

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

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 …

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

导读&#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 &…

MultiQC使用指导

MultiQC使用指导 官网资料文献&#xff1a;MultiQC --- summarize analysis results for multiple tools and samples in a single report参考资料一&#xff1a; 整合 fastq 质控结果的工具 简介 MultiQC 是一个基于Python的模块, 用于整合其它软件的报告结果, 目前支持以下软…

WorkerMan 入门学习之(二)基础教程-Connection类的使用

一、TcpConnection类 的使用 1、简单的TCP测试 Server.php <?php require_once __DIR__./Workerman/Autoloader.php; use Workerman\Worker; $worker new Worker(websocket://0.0.0.0:80);// 连接回调 $worker->onConnect function ($connection){echo "connecti…

71文件类型

1.kit类型 标准的SeaJs模块文件类型&#xff0c;直接对外暴露方法。 2.units类型 依赖pageJob&#xff0c;对外暴露一个名字&#xff0c;pageJob依赖暴露的名字对模块进行初始化&#xff0c;在pageJob内部逻辑自动执行init方法&#xff1b; 由于没有对外暴露方法&#xff0c;只…

七牛大数据平台的演进与大数据分析实践--转

原文地址&#xff1a;http://www.infoq.com/cn/articles/qiniu-big-data-platform-evolution-and-analysis?utm_sourceinfoq&utm_mediumpopular_widget&utm_campaignpopular_content_list&utm_contenthomepage 七牛大数据平台的演进与大数据分析实践 (点击放大图像…

最大化切割段

Description: 描述&#xff1a; In this article we are going to review classic dynamic programing problem which has been featured in interview rounds of amazon. 在本文中&#xff0c;我们将回顾在亚马逊的采访轮次中已经介绍的经典动态编程问题。 Problem statemen…

响应数据传出(springMVC)

1. SpringMVC 输出模型数据概述 提供了以下几种途径输出模型数据&#xff1a; ModelAndView: 处理方法返回值类型为 ModelAndView 时, 方法体即可通过该对象添加模型数据 Map 及 Model: 入参为 org.springframework.ui.Model、 org.springframework.ui.ModelMap 或 java.uti…

微信网页扫码登录的实现

为了让用户登录网站的门槛更低&#xff0c;微信扫一扫登录变得越来越广泛&#xff0c;所以最近加紧赶制的项目中有用到这个功能&#xff0c;此篇文字的出发点基于微信开放平台已经配置好域名&#xff08;80端口&#xff09;并且认证成功获得app_id和secret并有权限调用微信的接…

希尔密码_希尔密码| 网络安全

希尔密码Now, Hill Cipher is a very basic cryptographic technique which is used to convert a string into ciphertext. This technique was invented by an American Mathematician "Lester Sanders Hill". This is a polygraphic substitution cipher because …

Android 那些年,处理getActivity()为null的日子

在日常开发中的时候&#xff0c;我们经常会使用ViewPagerFragment进行视图滑动&#xff0c;在某些部分逻辑也许我们需要利用上下文Context&#xff08;例如基本的Toast&#xff09;&#xff0c;但是由于Fragment只是衣服在Activity容器的一个试图&#xff0c;如果需要拿到当前的…

设计模式状态模式uml_UML的完整形式是什么?

设计模式状态模式umlUML&#xff1a;统一建模语言 (UML: Unified Modeling Language) UML is an abbreviation of Unified Modeling Language. In the field of software engineering, it is a visual modeling language that is standard in quality. It makes it available t…