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 相关文章推荐
不用GD库生成当前时间的PNG格式图象的程序
Oct 09 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
Apr 15 PHP
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
Apr 23 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
Mar 13 PHP
分享下php5类中三种数据类型的区别
Jan 26 PHP
PHP实现加强版加密解密类实例
Jul 29 PHP
如何写php守护进程(Daemon)
Dec 30 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
May 28 PHP
解析PHP之提取多维数组指定列的方法
Jan 03 PHP
laravel5环境隐藏index.php后缀(apache)的方法
Oct 12 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
May 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 has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
php+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
javascript 函数调用规则
2009/08/26 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
Highcharts入门之基本属性
2016/08/02 Javascript
原生js更改css样式的两种方式
2017/03/15 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
Vuex 入门教程
2018/01/10 Javascript
微信小程序slider组件使用详解
2018/01/31 Javascript
基于ID3决策树算法的实现(Python版)
2017/05/31 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
Python3实现简单可学习的手写体识别(实例讲解)
2017/10/21 Python
Python流程控制常用工具详解
2020/02/24 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
css3动画 小球滚动 js控制动画暂停
2019/11/29 HTML / CSS
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
世界上最好的精品店:Shoptiques
2018/02/05 全球购物
垃圾回收的优点和原理
2014/05/16 面试题
师德个人剖析材料
2014/02/02 职场文书
高级编程求职信模板
2014/02/16 职场文书
教师节促销方案
2014/03/22 职场文书
爱护花草树木的标语
2014/06/11 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
骨干教师事迹材料
2014/12/17 职场文书
运动员入场前导词
2015/07/20 职场文书
课改心得体会范文
2016/01/25 职场文书
基于Python实现对比Exce的工具
2022/04/07 Python
详细介绍Next.js脚手架完整搭建封装
2022/04/26 Javascript