php选择排序法实现数组排序实例分析


Posted in PHP onFebruary 16, 2015

本文实例分析了php选择排序法实现数组排序的方法。分享给大家供大家参考。具体分析如下:

选择排序法的基本思路:直接用案例来说明吧,比如有一个数组$arr = array(2,6,3,9),从大到小排序。

第一次大循环:它首先假设$arr[0]为最大值,然后分别跟$arr[1]~$arr[3]进行比较,如果比较它大,则进行交换,过程是这样(2,6,3,9)---2和6比 --->(6,2,3,9)---6和3比--->(6,2,3,9)---6和9比--->(9,2,3,6)。注意,这里下标也要变化。

第二次大循环:假设$arr[1]最大(排除了$arr[0]),分别跟$arr[2]~$arr[3]比较,过程是这样(9,2,3,6)----2和3比---->(9,3,2,6)---3和6比--->(9,6,2,3)。

第三次大循环:假设$arr[2]最大,跟$arr[3]比较,过程是这样(9,6,2,3)---2和3比--->(9,6,3,2)

同样的,经过 N-1 次大的循环,即可排列出来

PHP代码如下,这里同样用函数进行的封装

<?php
function selectSort(&$arr){
 for($i=0;$i<count($arr);$i++){
 $max = $arr[$i];
 for($j=$i+1;$j<count($arr);$j++){
  if($max<$arr[$j]){
  $max = $arr[$j];
  $arr[$j] = $arr[$i];
  $arr[$i] = $max;
  }
 }
 }
 return $arr;
}
$myarr = array(2,6,3,9);
selectSort($myarr);
echo "<pre>";
print_r($myarr);
?>

代码分析:

第一次大循环:

$i=0 数组(2,6,3,9)
$j=1,执行 2和6比:变成$arr[0]=6,$arr[1]=2,$max=6即(6,2,3,9)
$j=2,执行 3和6比:不执行
$j=3,执行 9和6比:变成$arr[0]=9,$arr[3]=6,$max=9即(9,2,3,6)

第二次大循环:

$i=1,$max=$arr[1]=2,数组(9,2,3,6)
$j=2,执行 3和2比:变成$arr[1]=3,$arr[2]=2,$max=3即(9,3,2,6)
$j=3,执行 6和3比:变成$arr[1]=6,$arr[3]=3,$max=6即(9,6,2,3)

第三次大循环:

$i=2,$max=$arr[2]=2,数组(9,6,2,3)
$j=3,执行 3和2比:变成$max[2]=3,$arr[3]=2,$max=3即(9,6,3,2)

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP连接Access数据库的方法小结
Jun 20 PHP
zf框架的registry(注册表)使用示例
Mar 13 PHP
PHP实现获取域名的方法小结
Nov 05 PHP
php简单创建zip压缩文件的方法
Apr 30 PHP
thinkphp框架实现数据添加和显示功能
Jun 29 PHP
Nginx环境下PHP flush失效的解决方法
Oct 19 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
Nov 08 PHP
thinkPHP统计排行与分页显示功能示例
Dec 02 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
Jan 22 PHP
thinkPHP5项目中实现QQ第三方登录功能
Oct 20 PHP
laravel框架添加数据,显示数据,返回成功值的方法
Oct 11 PHP
浅谈PHP7中的一些小技巧
May 29 PHP
php插入排序法实现数组排序实例
Feb 16 #PHP
php实现递归与无限分类的方法
Feb 16 #PHP
php实现多维数组中每个单元值(数字)翻倍的方法
Feb 16 #PHP
php数组添加与删除单元的常用函数实例分析
Feb 16 #PHP
PHP两种快速排序算法实例
Feb 15 #PHP
PHP批量查询WordPress留言者E-mail地址实现方法
Feb 15 #PHP
CentOS下PHP安装Oracle扩展
Feb 15 #PHP
You might like
深入PHP中的HashTable结构详解
2013/06/13 PHP
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
js渐变显示渐变消失示例代码
2013/08/01 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
JS中this上下文对象使用方式
2016/10/09 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
javascript实现页面滚屏效果
2017/01/17 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
2017/02/21 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
微信分享调用jssdk实例
2017/06/08 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
2017/12/25 jQuery
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
JS实现移动端双指缩放和旋转方法
2019/12/13 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
[01:14]2019完美世界城市挑战赛(秋季赛)全国总决赛精彩花絮
2020/01/08 DOTA
python 提取文件的小程序
2009/07/29 Python
python 2.7.14安装图文教程
2018/04/08 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
基于matplotlib xticks用法详解
2020/04/16 Python
python实现画图工具
2020/08/27 Python
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
单位实习证明怎么写
2014/01/17 职场文书
大学本科生职业生涯规划书范文
2014/09/14 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
python中的random模块和相关函数详解
2022/04/22 Python