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 相关文章推荐
相对路径转化成绝对路径
Apr 10 PHP
Smarty Foreach 使用说明
Mar 23 PHP
thinkphp中ajax与php响应过程详解
Dec 08 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
PHP7新特性foreach 修改示例介绍
Aug 26 PHP
PHP构造函数与析构函数用法示例
Sep 28 PHP
PHP 模拟登陆功能实例详解
Sep 10 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 PHP
PHP接口类(interface)的定义、特点和应用示例
May 18 PHP
Yii 框架使用数据库(databases)的方法示例
May 19 PHP
浅谈如何提高PHP代码的质量
May 28 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垃圾回收机制简单说明
2010/07/22 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
javascript window.confirm确认 取消对话框实现代码小结
2012/10/21 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
js快速排序的实现代码
2013/12/08 Javascript
不要使用jQuery触发原生事件的方法
2014/03/03 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
js友好的时间返回函数
2016/08/24 Javascript
jQuery为动态生成的select元素添加事件的方法
2016/08/29 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
2016/11/29 Javascript
图片上传之FileAPI与NodeJs
2017/01/24 NodeJs
JS实现的简单分页功能示例
2018/08/23 Javascript
vue 本地环境跨域请求proxyTable的方法
2018/09/19 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
2020/05/20 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
[04:03][TI9趣味短片] 小鸽子茶话会
2019/08/20 DOTA
Python中的异常处理学习笔记
2015/01/28 Python
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
python保存网页图片到本地的方法
2018/07/24 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
python实现飞行棋游戏
2020/02/05 Python
zooplus意大利:在线宠物商店
2019/08/07 全球购物
Hurley官方网站:扎根于海滩生活方式的全球青年文化品牌
2020/05/18 全球购物
医院护士专业个人的求职信
2013/12/09 职场文书
党员理论学习心得体会
2016/01/21 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python