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 Smarty生成EXCEL文档的代码
Aug 23 PHP
php实现MD5加密16位(不要默认的32位)
Aug 12 PHP
discuz加密解密函数使用方法和中文注释
Jan 21 PHP
destoon实现底部添加你是第几位访问者的方法
Jul 15 PHP
php通过Chianz.com获取IP地址与地区的方法
Jan 14 PHP
PHP遍历XML文档所有节点的方法
Mar 12 PHP
php实现的通用图片处理类
Mar 24 PHP
PHP中curl_setopt函数用法实例分析
Apr 16 PHP
CodeIgniter配置之database.php用法实例分析
Jan 20 PHP
100行PHP代码实现socks5代理服务器
Apr 28 PHP
PHP回调函数与匿名函数实例详解
Aug 16 PHP
php strftime函数的详细用法
Jun 21 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
第十三节 对象串行化 [13]
2006/10/09 PHP
杏林同学录(九)
2006/10/09 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
PHP实现的限制IP投票程序IP来源分析
2016/05/04 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
2016/09/22 PHP
JavaScript 学习笔记(十五)
2010/01/28 Javascript
JS 日期比较大小的简单实例
2014/01/13 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
jQuery实现获取table表格第一列值的方法
2016/03/01 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
2016/05/03 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
JS闭包与延迟求值用法示例
2016/12/22 Javascript
Angular 如何使用第三方库的方法
2018/04/18 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
python读取html中指定元素生成excle文件示例
2014/04/03 Python
web.py在模板中输出美元符号的方法
2014/08/26 Python
Python制作简易注册登录系统
2016/12/15 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
python flask搭建web应用教程
2019/11/19 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
PyTorch的自适应池化Adaptive Pooling实例
2020/01/03 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
CSS3 分类菜单效果
2019/05/27 HTML / CSS
Trina Turk官网:美国时装和泳装品牌
2018/06/10 全球购物
当当网软件测试笔试题
2015/11/24 面试题
毕业生在校学习的自我评价分享
2013/10/08 职场文书
青年创业培训欢迎词
2014/01/08 职场文书
创业计划书撰写原则
2014/01/25 职场文书
网络管理员岗位职责
2014/03/17 职场文书
《火烧云》教学反思
2016/02/23 职场文书
vue 实现上传组件
2021/05/31 Vue.js
golang内置函数len的小技巧
2021/07/25 Golang
Python初识逻辑与if语句及用法大全
2021/08/07 Python