技术标签: 算法
排序算法之桶排序
桶排序是速度最快的排序啦,简单的说,就是把数据分组,放在一个个预先准备好的有序的桶里,然后输出桶的下角标。
在桶排序中,速度和空间似乎是矛盾的,如果需要排序的数字非常的多,桶排序无疑是最快的,但是由于需要准备好多桶,储存空间的损耗也是非常大的。
所以桶排序适用在需要排序的数据大致相同,而且相对集中。
废话不说啦,我们开始总结桶排序的思路咯。
假如我们有a(1)~a(10)十个桶,我们有五个数字需要排序:
假设这五个数字分别是8、5 、6、3、6
桶排序最为突破性的思想是变排序为不排序,选择排序、冒泡排序等其他排序似乎都需要比较和交换,但是桶排序不需要。你只是需要把需要排序的数据放在已经有序的桶里,输出下角标。就已经完成排序咯。
如上图所示,我们把数据“3”放进桶“a(3)”里,把数据“5”放在同“a(5)”里,因为数据“6”有两个,所以需要在桶“a(6)”放“1+1”两个,如下类似。这样我们打印出桶内有数据的桶的下角标就得到了3 、 5、 6 、6、8。
我们用VB实现这个过程(仅供参考):
Dim a(10) As Integer ‘ 定义数据类型
For i = 1 To 5
m = Val(InputBox("请输入""输入框", 0)) '依次输入5个值
a(m)= a(m) + 1 '桶的初始值为0,增加一个数,a(m)内的值增加1
Next
For j = 0 To 10 '遍历每一个桶,判断桶内有无元素
If a(j) <> 0 Then '如果桶内有元素
For t = 1 To a(j) '依次输出桶内元素
Print j '打印桶的下角标
Next
End If
Next
是的,桶排序就就是这么简单,但是仅仅是知道和理解还是不行,我们要多练习,才能切实的掌握它。
a(1) |
a(2) |
a(3) |
a(4) |
a(5) |
a(6) |
a(7) |
a(8) |
a(9) |
a(10) |
|
|
1 |
|
1 |
2 |
|
1 |
|
|
崩溃堆栈如下:解决办法:
错误现象:控制台日志:URI::InvalidURIError (URI::InvalidURIError): lib/gitlab/proxy_http_connection_adapter.rb:14:in `connection' app/services/web_hook_service.rb:73:in `make_request' app/services/web_ho...
1、前端上传的主要代码: 2、后台处理主要代码: String root=ServletActionContext.getServletContext().getRealPath("/");
<!--font { font-family: Arial; line-height: 180%; font-size: 12pt; margin-top: 2; margin-bottom: 2 }body { font-family: font }td { border-left-co
链接:http://download.csdn.net/detail/mycodream/7452387
PHP 表单处理PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据(form-data)。$_GET 是通过 URL 参数传递到当前脚本的变量数组。$_POST 是通过 HTTP POST 传递到当前脚本的变量数组。有一点很重要的事情值得注意,当处理 HTML 表单时,PHP 能把来自 HTML 页面中的表单元素自动变成可供 PHP 脚本使用
我在windows下实现了dvb-s的发射和接收。发射使用的是limesdr-mini,接收使用的是hackrf/limesdr-usb。这次和以前的dvb-t发射不同,这次的发射和接收都是用软件实现的,并且都是开源的,以前的dvb-t接收机虽然是rtlsdr,但是是用芯片解调的dvb-t。不过接收机是sdrangel,有点难编译,并且datv express编译好的版本好像也只有wi...
条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用本条款听起来很复杂,其实不然。它只是一个很简单的道理,真的,相信我。先看第一种情况:返回一个局部对象的引用。它的问题在于,局部对象 ----- 顾名思义 ---- 仅仅是局部的。也就是说,局部对象是在被定义时创建,在离开生命空间时被销毁的。所谓生命空间,是指它们所在的函数体。当函数返回时,程序的控制离开了这
让我们先来看一张图片: 看完这张图片,我心里充满疑惑,难道Ruby + Rails真的能够有这么好吗? 心里有这么几个疑问:Ruby是谁开发的? Ruby是什么? Rails是什么? Ruby on Rails与目前已经有的开发语言相比有什么优点?为什么要使用它? Ruby on Rails稳定吗?效率高吗?能够承受大数据量的访问吗? Ruby on Ra
开始游戏内有需求做多边形碰撞功能,但是接入box2d相对游戏的需求来说太重度了。所以准备自己实现碰撞。确定多边形,必然要用到凸包的算法。在github上也找到了一些lua实现,但是这里的算法没有考虑多点共线的问题。所以准备自己实现准备这里提到的所有凸包,都指的平面上的。思路凸包的具体定义,这里不赘述。一种通俗的说法,在木板上钉钉子,我们用一根麻绳绑住
distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用 它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。下面先来看看例子:table表字段1 字段2 id name 1 a 2
导读:本文将大数据的工作角色分为三种类型,包括业务相关、数据科学相关和数据工程。大数据平台偏向于工程方面,大数据平台一般包括数据源、数据采集、数据存储、数据分析等方面。 讲师从数据来源、数据源结构、数据变化程度和数据规模等4个维度对数据源进行分类,数据源分类维度的不同决定最后的技术选型。讲师还对数据源分类的定义及选型方式进行详细讲解,最终联系到大数据的应用场景,让数据应用方式更加直...