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函数)
Oct 09 PHP
网页游戏开发入门教程二(游戏模式+系统)
Nov 02 PHP
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
May 25 PHP
解析关于wamp启动是80端口被占用的问题
Jun 21 PHP
php中字符集转换iconv函数使用总结
Oct 11 PHP
php判断输入是否是纯数字,英文,汉字的方法
Mar 05 PHP
PHP将进程作为守护进程的方法
Mar 19 PHP
PHP+jQuery+Ajax实现用户登录与退出
Apr 27 PHP
php显示时间常用方法小结
Jun 05 PHP
盘点PHP和ASP.NET的10大对比!
Dec 24 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
Apr 20 PHP
php微信公众号开发之秒杀
Oct 20 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 Ajax中文乱码问题解决方法
2009/02/27 PHP
PHP Stream_*系列函数
2010/08/01 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
JavaScript创建命名空间的5种写法
2014/06/24 PHP
详解js异步文件加载器
2016/01/24 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
js类中获取外部函数名的方法
2007/08/19 Javascript
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
jquery操作select option 的代码小结
2011/06/21 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
node.js中的fs.mkdir方法使用说明
2014/12/17 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
实习护士自我鉴定
2013/10/13 职场文书
工作室成员个人发展规划范文
2014/01/24 职场文书
九年级语文教学反思
2014/02/04 职场文书
求职自荐信的格式
2014/04/07 职场文书
2014年母亲节演讲稿范文
2014/05/07 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
2015年科学教研组工作总结
2015/07/22 职场文书
九不准学习心得体会
2016/01/23 职场文书
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python