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 相关文章推荐
html中select语句读取mysql表中内容
Oct 09 PHP
PHP通用分页类page.php[仿google分页]
Aug 31 PHP
CodeIgniter图像处理类的深入解析
Jun 17 PHP
PHP截取IE浏览器并缩小原图的方法
Mar 04 PHP
yii2超好用的日期组件和时间组件
May 05 PHP
php简单统计中文个数的方法
Sep 30 PHP
基于php编程规范(详解)
Aug 17 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
Feb 12 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
Apr 09 PHP
PHP实现提取多维数组指定一列的方法总结
Dec 04 PHP
PHP ElasticSearch做搜索实例讲解
Feb 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
PHP概述.
2006/10/09 PHP
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
javascript 数组的方法集合
2008/06/05 Javascript
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
jQuery层级选择器_动力节点节点Java学院整理
2017/07/04 jQuery
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
nodejs中各种加密算法的实现详解
2019/07/11 NodeJs
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
vue中element 的upload组件发送请求给后端操作
2020/09/07 Javascript
python函数参数*args**kwargs用法实例
2013/12/04 Python
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
python3实现表白神器
2019/04/09 Python
python issubclass 和 isinstance函数
2019/07/25 Python
python实现宿舍管理系统
2019/11/22 Python
Win10环境中如何实现python2和python3并存
2020/07/20 Python
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
super()与this()的区别
2016/01/17 面试题
企业管理毕业生求职信
2014/03/11 职场文书
会议主持词
2014/03/17 职场文书
《与朱元思书》的教学反思
2014/04/17 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
2015年健康教育工作总结
2015/04/10 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
Golang 空map和未初始化map的注意事项说明
2021/04/29 Golang
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS