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 相关文章推荐
第四节 构造函数和析构函数 [4]
Oct 09 PHP
VFP与其他应用程序的集成
Oct 09 PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
Sep 11 PHP
php 不同编码下的字符串长度区分
Sep 26 PHP
PHP禁止个别IP访问网站
Oct 30 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
Apr 10 PHP
ThinkPHP提交表单时默认自动转义的解决方法
Nov 25 PHP
ThinkPHP实现支付宝接口功能实例
Dec 02 PHP
PHP语法小结之基础和变量
Nov 22 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
Oct 21 PHP
Laravel实现通过blade模板引擎渲染视图
Oct 25 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
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
php版小黄鸡simsimi聊天机器人接口分享
2014/01/26 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
js技巧--转义符&quot;\&quot;的妙用
2007/01/09 Javascript
javascript 屏蔽鼠标键盘的几段代码
2008/01/02 Javascript
11款基于Javascript的文件管理器
2009/10/25 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
jquery做个日期选择适用于手机端示例
2017/01/10 Javascript
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
Python实现全局变量的两个解决方法
2014/07/03 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
详解windows python3.7安装numpy问题的解决方法
2018/08/13 Python
设置python3为默认python的方法
2018/10/31 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
python 下载文件的多种方法汇总
2020/11/17 Python
matplotlib之pyplot模块之标题(title()和suptitle())
2021/02/22 Python
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
幼儿如何来做好自我评价
2013/11/05 职场文书
实习鉴定范文
2013/12/19 职场文书
2014年宣传工作总结
2014/11/18 职场文书
学生逃课万能检讨书2000字
2015/02/17 职场文书
退休职工欢送会致辞
2015/08/01 职场文书
《牧场之国》教学反思
2016/02/22 职场文书
汉语拼音教学反思
2016/02/22 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL