桶式排序 php,PHP实现桶排序算法
简单意义上的桶排序:
桶排序的原理是先安排N+1个桶作为容器,若数据范围为N的话。
然后将测试数据(所需排序的数据)进行循环,放入对应的桶内。数据一定是在范围N内的。
最后,循环桶里的元素,并且输出,进行从大到小或从小到大的排序。
例如:
我们的取值范围是10,那么就要定义一个 11长度的数组$arr. 并且让所有的元素值都为0
然后,对需要排序的数组进行循环 如5,3,5,2,8.(这边取值范围其实才8)
将数据依次对应$arr桶数组内元素,即 如果是5,则使$arr[5]++.
这时候 $arr[2]=1 $arr[3]=1 $arr[5]=2 $arr[8]=1
然后循环$arr的数组,若$arr[2]=1,则循环输出元素2一次,$arr[5]=2,则循环输出5两次
结果输出即为 2 3 5 5 8
如果循环数值是从大到小 则会是从大到小的排序
//设置默认数组,默认值为0;
$arr = array();
for ($i = 0; $i <= 10; $i++) {
$arr[$i] = 0;
}
//设置测试的五个数据
$arr1 = array(5, 3, 5, 2, 8);
//根据数据 对默认数组的对应元素进行+1; J的取值范围不能等于$arr1数组长度
for ($j = 0; $j < count($arr1); $j++) {
//这边给相应的数组值+1
$arr[$arr1[$j]]++;
}
//开始循环输出 默认数组 $arr 里面相应的值
for ($k = 0; $k <= 10; $k++) {
for ($l=1; $l <=$arr[$k]; $l++) {
echo "$k ";
}
}
?>
缺点:
浪费空间.
无法进行浮点数据的排序.
桶式排序 php,PHP实现桶排序算法相关推荐
- 排序算法之计数排序、基数排序和桶排序
转自:http://www.cnblogs.com/ttltry-air/archive/2012/08/04/2623302.html 计数排序,基数排序,桶排序等非比较排序算法,平均时间复杂度都是 ...
- 计数排序,基数排序,桶排序
转 http://blog.163.com/yuyang_tech/blog/static/216050083201382055821953/ 与合并排序,堆排序,快速排序等基于比较的排序算法不同,计 ...
- 计数排序vs基数排序vs桶排序
从计数排序说起 计数排序是一种非基于元素比较的排序算法,而是将待排序数组元素转化为计数数组的索引值,从而间接使待排序数组具有顺序性. 计数排序的实现一般有两种形式:基于辅助数组和基于桶排序. 基于辅助 ...
- c语言排序(快速排序,冒泡排序,选择排序,插入排序,桶排序)
快速排序,冒泡排序,选择排序,插入排序,桶排序 文章目录 什么是排序 快速排序 实现流程 代码 改进版快速排序代码 注意点 冒泡排序 实现流程 实现代码 选择排序 实现代码 插入排序 实现代码 桶排序 ...
- 【算法学习】线性时间排序-计数排序、基数排序和桶排序详解与编程实现
计数排序 计数排序假设n个输入元素中的每一个都是介于0到k之间的整数.此处k为某个整数(输入数据在一个小范围内). 算法思想 计数排序的基本思想是对每一个输入元素x,确定出小于x的元素的个数.然后再将 ...
- 排序 (5)桶排序“概念”
1. 应用场景 数组的长度很大,但很多数都集中在一个区间.eg. 数万名员工年龄排序. 1.1 思想 step1. 将元素分发到对应的桶中 step2. 对每个桶里面的数据进行排序 step3. 合并 ...
- 归并排序,快速排序,冒泡排序,选择排序,基数排序,桶排序,堆排序(c++实现)
一.归并排序 #include<iostream> using namespace std; void Merge(int arr[],int low,int mid,int high); ...
- 排序算法理解总结篇——冒泡排序、选择排序、插入排序、希尔排序、归并排序、堆排序、计数排序、基数排序、桶排序
- 木桶排序算法_这才是你想要桶排序
前面说的 昨天发的桶排序文章,有同学回复,确实有比较精明的同学,文章就是想提出一个比较简单的思路,本来想给自己的排序方式写个名字叫做"木桶排序",这篇文章讲解真正的桶排序,结合前面 ...
最新文章
- 从java到c_怎样快速的从 Java 转到 C ?
- linux系统运行flash3d,真正的3D操作系统,太强了
- CheckStyle
- SAP Fiori应用发生超时错误的一个可能原因
- vagrant box php,vagrant box php开发环境配置 -- nginx
- Windows Azure移动终端云服务管理(公测版)
- python 问题集
- beatsx三闪红灯是什么意思_飞机座椅上写的quot;taxiquot; 什么意思?出租车?
- iOS11 获取手机已安装应用列表
- 上海计算机应用基础自考上机,上海2012年自考《计算机应用基础》上机考核大纲...
- Linux系统发布ASP.NET项目
- PhpStorm中如何使用Xdebug工具,入门级操作方法
- Java常见算法之二分法查找算法详解
- 【前端 教程】详解 立即执行函数
- html编写一个飞机游戏,利用HTML5 Canvas如何制作一个简单的打飞机游戏
- c35是什么意思_什么是C35混凝土?
- python用stomp扩展连接activemq(千千万万要注意,默认端口是61613,不是62613)
- 漏洞:会话固定攻击(session fixation attack)
- html元素背景与雪碧图
- 聊聊端口映射和内网穿透
热门文章
- 细数黑客攻击的七大战术
- Visual Studio下使用jQuery的10个技巧
- 《力学》课时三常见力和牛顿三定律
- 数据库高级知识——mysql架构介绍(一)
- linux的系统移植——交叉编译器
- iphone最新款手机_iPhone 丢了99.9%能找回?这种做法不可信!!
- c++ map 自定义排序_Java学习笔记:Map集合介绍
- java 替换多个字符串_Java一次(或以最有效的方式)替换字符串中的多个不同子字符串...
- 小程序 pagescrollto_微信小程序学习笔记(三)-- 首页及详情页开发
- 计算机主机机箱面板辐射,电脑机箱如何防辐射----给大家科普一下