简单意义上的桶排序:

桶排序的原理是先安排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实现桶排序算法相关推荐

  1. 排序算法之计数排序、基数排序和桶排序

    转自:http://www.cnblogs.com/ttltry-air/archive/2012/08/04/2623302.html 计数排序,基数排序,桶排序等非比较排序算法,平均时间复杂度都是 ...

  2. 计数排序,基数排序,桶排序

    转 http://blog.163.com/yuyang_tech/blog/static/216050083201382055821953/ 与合并排序,堆排序,快速排序等基于比较的排序算法不同,计 ...

  3. 计数排序vs基数排序vs桶排序

    从计数排序说起 计数排序是一种非基于元素比较的排序算法,而是将待排序数组元素转化为计数数组的索引值,从而间接使待排序数组具有顺序性. 计数排序的实现一般有两种形式:基于辅助数组和基于桶排序. 基于辅助 ...

  4. c语言排序(快速排序,冒泡排序,选择排序,插入排序,桶排序)

    快速排序,冒泡排序,选择排序,插入排序,桶排序 文章目录 什么是排序 快速排序 实现流程 代码 改进版快速排序代码 注意点 冒泡排序 实现流程 实现代码 选择排序 实现代码 插入排序 实现代码 桶排序 ...

  5. 【算法学习】线性时间排序-计数排序、基数排序和桶排序详解与编程实现

    计数排序 计数排序假设n个输入元素中的每一个都是介于0到k之间的整数.此处k为某个整数(输入数据在一个小范围内). 算法思想 计数排序的基本思想是对每一个输入元素x,确定出小于x的元素的个数.然后再将 ...

  6. 排序 (5)桶排序“概念”

    1. 应用场景 数组的长度很大,但很多数都集中在一个区间.eg. 数万名员工年龄排序. 1.1 思想 step1. 将元素分发到对应的桶中 step2. 对每个桶里面的数据进行排序 step3. 合并 ...

  7. 归并排序,快速排序,冒泡排序,选择排序,基数排序,桶排序,堆排序(c++实现)

    一.归并排序 #include<iostream> using namespace std; void Merge(int arr[],int low,int mid,int high); ...

  8. 排序算法理解总结篇——冒泡排序、选择排序、插入排序、希尔排序、归并排序、堆排序、计数排序、基数排序、桶排序

  9. 木桶排序算法_这才是你想要桶排序

    前面说的 昨天发的桶排序文章,有同学回复,确实有比较精明的同学,文章就是想提出一个比较简单的思路,本来想给自己的排序方式写个名字叫做"木桶排序",这篇文章讲解真正的桶排序,结合前面 ...

最新文章

  1. 从java到c_怎样快速的从 Java 转到 C ?
  2. linux系统运行flash3d,真正的3D操作系统,太强了
  3. CheckStyle
  4. SAP Fiori应用发生超时错误的一个可能原因
  5. vagrant box php,vagrant box php开发环境配置 -- nginx
  6. Windows Azure移动终端云服务管理(公测版)
  7. python 问题集
  8. beatsx三闪红灯是什么意思_飞机座椅上写的quot;taxiquot; 什么意思?出租车?
  9. iOS11 获取手机已安装应用列表
  10. 上海计算机应用基础自考上机,上海2012年自考《计算机应用基础》上机考核大纲...
  11. Linux系统发布ASP.NET项目
  12. PhpStorm中如何使用Xdebug工具,入门级操作方法
  13. Java常见算法之二分法查找算法详解
  14. 【前端 教程】详解 立即执行函数
  15. html编写一个飞机游戏,利用HTML5 Canvas如何制作一个简单的打飞机游戏
  16. c35是什么意思_什么是C35混凝土?
  17. python用stomp扩展连接activemq(千千万万要注意,默认端口是61613,不是62613)
  18. 漏洞:会话固定攻击(session fixation attack)
  19. html元素背景与雪碧图
  20. 聊聊端口映射和内网穿透

热门文章

  1. 细数黑客攻击的七大战术
  2. Visual Studio下使用jQuery的10个技巧
  3. 《力学》课时三常见力和牛顿三定律
  4. 数据库高级知识——mysql架构介绍(一)
  5. linux的系统移植——交叉编译器
  6. iphone最新款手机_iPhone 丢了99.9%能找回?这种做法不可信!!
  7. c++ map 自定义排序_Java学习笔记:Map集合介绍
  8. java 替换多个字符串_Java一次(或以最有效的方式)替换字符串中的多个不同子字符串...
  9. 小程序 pagescrollto_微信小程序学习笔记(三)-- 首页及详情页开发
  10. 计算机主机机箱面板辐射,电脑机箱如何防辐射----给大家科普一下