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实现的下载css文件中的图片的代码
Feb 08 PHP
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
Jun 24 PHP
php计算到指定日期还有多少天的方法
Apr 14 PHP
PHP实现简单数字分页效果
Jul 26 PHP
PHP接收json 并将接收数据插入数据库的实现代码
Dec 01 PHP
PHP7正式版测试,性能惊艳!
Dec 08 PHP
PHP微信红包生成代码分享
Oct 06 PHP
PHP微信公众号开发之微信红包实现方法分析
Jul 14 PHP
PHP实现动态获取函数参数的方法示例
Apr 02 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
Feb 28 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
Sep 26 PHP
php源码的安装方法和实例
Sep 26 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 $_FILES函数详解
2011/03/09 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
php抛出异常与捕捉特定类型的异常详解
2016/10/26 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
javascript通过class来获取元素实现代码
2013/02/20 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
简单的Vue异步组件实例Demo
2017/12/27 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
Python中文件操作简明介绍
2015/04/13 Python
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
python清除字符串里非数字字符的方法
2015/07/02 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
Python多线程原理与用法详解
2018/08/20 Python
Django对models里的objects的使用详解
2019/08/17 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
Django Form常用功能及代码示例
2020/10/13 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
Html5页面中的返回实现的方法
2018/02/26 HTML / CSS
abstract class和interface有什么区别?
2012/01/03 面试题
幼儿师范毕业生自荐信
2013/11/09 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
项目投资意向书范本
2015/05/09 职场文书
《检阅》教学反思
2016/02/22 职场文书
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL