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 相关文章推荐
java EJB 加密与解密原理的一个例子
Jan 11 PHP
解析PHP实现多进程并行执行脚本
Jun 18 PHP
php获取字段名示例分享
Mar 03 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
Mar 04 PHP
Laravel 5 框架入门(一)
Apr 09 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
Apr 15 PHP
PHP图片加水印实现方法
May 06 PHP
PHP常用的三种设计模式汇总
Aug 28 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 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 数组遍历的差异(array_diff 的实现)
2008/03/23 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
[JS]点出统计器
2020/10/11 Javascript
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
csdn 博客中实现运行代码功能实现
2009/08/29 Javascript
javascript入门基础之私有变量
2010/02/23 Javascript
javascript小数四舍五入多种方法实现
2012/12/23 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
基于JavaScript代码实现微信扫一扫下载APP
2015/12/30 Javascript
Angularjs实现mvvm式的选项卡示例代码
2016/09/08 Javascript
js和jquery中获取非行间样式
2017/05/05 jQuery
vue.js实现只弹一次弹框
2018/01/29 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
webpack优化的深入理解
2018/12/10 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
Vue实现返回顶部按钮实例代码
2020/10/21 Javascript
python实现稀疏矩阵示例代码
2017/06/09 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
pyqt5实现俄罗斯方块游戏
2019/01/11 Python
python3实现表白神器
2019/04/09 Python
django实现更改数据库某个字段以及字段段内数据
2020/03/31 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
用python对oracle进行简单性能测试
2020/12/05 Python
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
Linux的主要特性
2016/09/03 面试题
后勤采购员岗位职责
2013/12/19 职场文书
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
电工技术比武方案
2014/05/11 职场文书
质量整改报告范文
2014/11/08 职场文书
单独二胎证明
2015/06/24 职场文书
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python