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中使用Akismet防止垃圾评论的代码
Jun 10 PHP
PHP生成不同颜色、不同大小的tag标签函数
Sep 23 PHP
php的memcache类分享(memcache队列)
Mar 26 PHP
支付宝接口开发集成支付环境小结
Mar 17 PHP
浅谈PHP中的
Apr 23 PHP
thinkphp整合微信支付代码分享
Nov 24 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
Jun 06 PHP
PHP自定义函数实现数组比较功能示例
Oct 19 PHP
php微信公众号开发之快递查询
Oct 20 PHP
PHP的mysqli_thread_id()函数讲解
Jan 24 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 PHP
基于thinkphp6.0的success、error实现方法
Nov 05 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
php中输出json对象的值(实现方法)
2018/03/07 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
从javascript语言本身谈项目实战
2006/12/27 Javascript
求解开jscript.encode代码的asp函数
2007/02/28 Javascript
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
2012/10/11 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
jQuery实现隔行背景色变色
2014/11/24 Javascript
jQuery基于json与cookie实现购物车的方法
2016/04/15 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
jquery实现转盘抽奖功能
2017/01/06 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
2014/04/25 Python
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
神经网络理论基础及Python实现详解
2017/12/15 Python
python中for循环把字符串或者字典添加到列表的方法
2019/07/20 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
外语系毕业生找工作的求职信
2013/11/28 职场文书
餐饮业经理竞聘演讲稿
2014/01/14 职场文书
精彩自我鉴定
2014/01/16 职场文书
竞聘演讲稿
2014/04/24 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
庆七一宣传标语
2014/10/08 职场文书
十月围城观后感
2015/06/08 职场文书
承兑汇票延期证明
2015/06/23 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
Vue如何实现组件间通信
2021/05/15 Vue.js
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技