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 相关文章推荐
phpmyadmin MySQL 加密配置方法
Jul 05 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
Aug 06 PHP
MongoDB在PHP中的常用操作小结
Feb 20 PHP
关于PHP的curl开启问题探讨
Apr 08 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
Apr 03 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
Aug 31 PHP
浅谈PHP中的错误处理和异常处理
Feb 04 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
May 09 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
Nov 20 PHP
PHP检测一个数组有没有定义的方法步骤
Jul 20 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 PHP
PHP实现爬虫爬取图片代码实例
Mar 03 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下用GD生成生成缩略图的两个选择和区别
2007/04/17 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
PHP 8新特性简介
2020/08/18 PHP
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
2015/02/05 Javascript
jQuery插件windowScroll实现单屏滚动特效
2015/07/14 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
使用node.JS中的url模块解析URL信息
2020/02/06 Javascript
JavaScript实现HSL拾色器
2020/05/21 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
python实现TF-IDF算法解析
2018/01/02 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
2020/03/06 Python
Python装饰器用法与知识点小结
2020/03/09 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
瑞典多品牌连锁店:Johnells
2021/01/13 全球购物
业务部门经理岗位职责
2014/02/23 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
Redis基本数据类型Set常用操作命令
2022/06/01 Redis