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 array_map array_multisort 高效处理多维数组排序
Jun 11 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
Jan 16 PHP
phpmyadmin3 安装配置图解教程
Mar 29 PHP
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
Jul 01 PHP
PHP超级全局变量数组小结
Oct 04 PHP
简单实用的.net DataTable导出Execl
Oct 28 PHP
PHP内置过滤器FILTER使用实例
Jun 25 PHP
PHP函数http_build_query使用详解
Aug 20 PHP
php检测apache mod_rewrite模块是否安装的方法
Mar 14 PHP
yii2 页面底部加载css和js的技巧
Apr 21 PHP
php 输出json及显示json中的中文汉字详解及实例
Nov 09 PHP
php实现网页端验证码功能
Jul 11 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
Dedecms常用函数解析
2008/02/01 PHP
简单的PHP留言本实例代码
2010/05/09 PHP
php $_SERVER windows系统与linux系统下的区别说明
2014/02/14 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
2014/11/15 PHP
php中动态变量用法实例
2015/06/10 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
yii2中添加验证码的实现方法
2016/01/09 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
2018/09/16 PHP
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
Jquery实现简单的轮播效果(代码管用)
2016/03/14 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
vue-router实现webApp切换页面动画效果代码
2017/05/25 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
2017/07/28 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
解决uWSGI的编码问题详解
2017/03/24 Python
python 中的int()函数怎么用
2017/10/17 Python
python实现屏保计时器的示例代码
2018/08/08 Python
python 读取Linux服务器上的文件方法
2018/12/27 Python
python对常见数据类型的遍历解析
2019/08/27 Python
Python Numpy库常见用法入门教程
2020/01/16 Python
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
为什么需要版本控制
2016/10/28 面试题
公司中秋节活动方案
2014/02/12 职场文书
营销总监岗位职责范本
2014/02/26 职场文书
企业文化建设实施方案
2014/03/22 职场文书
感恩节寄语2015
2015/03/24 职场文书
党支部工作总结2015
2015/04/01 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
解约证明模板
2015/06/19 职场文书
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis