冒泡排序法相关解析
来源:互联网 发布:中金 薪水 知乎 编辑:程序博客网 时间:2024/05/10 19:39
使用php对数组进行冒泡排序
对数组进行冒泡排序的前提是数组值类型可转为数字型;
(php是弱类型语言【javascript、python也是】,变量类型定义时无需说明,运算时自动转换,例:2 == 1 + “1”);
目标数组中允许存在重复的值 —— 是;
冒泡排序思路:从数组尾部开始向前取数字并和其它每个数字比较,遇到比自己大的就和其交换(循环 n+(n-1)+(n-2)+…+1 次完成排序【其中n为要排序的数组长度】),小的值不断向前移动,就像水中的气泡向上飘一样。
代码:
<?php$arr = [9, 8, 7, 6, 5, 4, 3, 2, 1]; //示例数组$length = count($arr); //数组长度for ($i = 0; $i < $length; $i++) { for ($j = $length - 1; $j > $i; $j--) { if ($arr[$j] < $arr[$j - 1]) { //交换两个值;如果使用 > ,数组会从大到小排序 $tmp = $arr[$j]; $arr[$j] = $arr[$j - 1]; $arr[$j - 1] = $tmp; } }}print_r($arr);
库函数说明:
- count() ——获取数组长度,示例:count([1,2,3,4,5])==5
调试代码显示出排序过程:
[9,8,7,6,5,4,3,2,1,0] - 0 - 987654321
[0,9,8,7,6,5,4,3,2,1] - 1 - 98765432
[0,1,9,8,7,6,5,4,3,2] - 2 - 9876543
[0,1,2,9,8,7,6,5,4,3] - 3 - 987654
[0,1,2,3,9,8,7,6,5,4] - 4 - 98765
[0,1,2,3,4,9,8,7,6,5] - 5 - 9876
[0,1,2,3,4,5,9,8,7,6] - 6 - 987
[0,1,2,3,4,5,6,9,8,7] - 7 - 98
[0,1,2,3,4,5,6,7,9,8] - 8 - 9
[0,1,2,3,4,5,6,7,8,9] - 9 -
Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 )
库函数说明:
- json_encode() ——将数组转为json格式,示例:json_encode([1,2,3,4,5])==[1,2,3,4,5]
推荐调试代码(附函数形式代码):https://github.com/lifankohome/csdn/blob/master/maopao.php
- 冒泡排序法相关解析
- 线性筛法相关
- 分治法相关
- 趋势分析法相关资料
- 虚拟激励法相关记录
- 素数筛法相关问题
- 随机梯度下降法相关
- 牛顿法和拟牛顿法相关
- 匈牙利命名法相关命名表
- 冒泡排序解析
- 冒泡排序原理解析
- Scala冒泡排序解析
- 第七章 暴力求解法相关知识点总结
- 冒泡排序自我经典解析
- 排序算法解析--冒泡排序,选择排序,快速排序
- 冒泡排序(解析及代码实现)
- c/c++冒泡排序算法解析
- # Java实现冒泡排序—详细解析优化版冒泡
- DraggableFlagView(自改版)的使用
- 高可用集群管理工具的总结
- Hibernate学习---第九节:继承关系的映射配置
- Hibernate学习---第十节:Hibernate之hql
- Hibernate学习---第十一节:Hibernate之QBC、样例查询&离线查询
- 冒泡排序法相关解析
- Hibernate学习---第十二节:Hibernate之数据抓取策略&批量抓取
- Hibernate学习---第十三节:Hibernate之锁机制&乐观锁实现
- Hibernate学习---第十四节:hibernate过滤器和拦截器的实现
- Hibernate学习---第十五节:hibernate之session线程安全
- Java设计模式之装饰者模式
- 微服务、分布式、公有云、私有云
- Spring介绍
- 数据流图和数据流程图的区别