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来自动调用不同服务器上的flash
Oct 09 PHP
Smarty模板快速入门
Jan 04 PHP
php Undefined index和Undefined variable的解决方法
Mar 27 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
Aug 22 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
php mb_substr()函数截取中文字符串应用示例
Jul 29 PHP
php实现通用的信用卡验证类
Mar 24 PHP
Yii框架实现邮箱激活的方法【数字签名】
Oct 18 PHP
PHP解耦的三重境界(浅谈服务容器)
Mar 13 PHP
php数值转换时间及时间转换数值用法示例
May 18 PHP
php实现的二分查找算法示例
Jun 20 PHP
laravel 修改记住我功能的cookie保存时间的方法
Oct 14 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
删除无限级目录与文件代码共享
2006/07/12 PHP
解析在zend Farmework下如何创立一个FORM表单
2013/06/28 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
2018/08/02 PHP
PHP一致性hash分布式算法封装类定义与用法示例
2018/08/04 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
2019/03/18 PHP
Laravel 简单实现Ajax滚动加载示例
2019/10/22 PHP
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
实例讲解Python中函数的调用与定义
2016/03/14 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
利用Python实现原创工具的Logo与Help
2018/12/03 Python
Python3.5装饰器典型案例分析
2019/04/30 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
2019/09/26 Python
Python实现仿射密码的思路详解
2020/04/23 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
大学生入党自我鉴定
2013/10/31 职场文书
会计助理的岗位职责
2013/11/29 职场文书
入学申请自荐信范文
2014/02/26 职场文书
运动会演讲稿
2014/05/07 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
营销策划分析:怎么策划才能更好销量产品?
2019/09/04 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
python Tkinter模块使用方法详解
2022/04/07 Python