php选择排序法实现数组排序实例分析

 更新时间:2015年02月16日 14:37:34   作者:php之路  
这篇文章主要介绍了php选择排序法实现数组排序的方法,实例分析了选择排序的原理与具体执行步骤,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例分析了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实现的最大正向匹配算法示例

    这篇文章主要介绍了PHP实现的最大正向匹配算法,简单描述了最大正向匹配算法的概念、原理并结合实例形式分析了php实现与使用最大正向匹配算法的相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • PHP之数组学习

    PHP之数组学习

    对于网页编程来说,最重要的就是存取和读写数据了。存储方式可能有很多种,可以是字符串、数组、文件的形式等
    2011-05-05
  • PHP实现字符串大小写转函数的功能实例

    PHP实现字符串大小写转函数的功能实例

    这篇文章主要给大家介绍了关于利用PHP如何实现字符串大小写转函数功能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友一起来看看啊
    2019-02-02
  • php处理斐波那契数列非递归方法

    php处理斐波那契数列非递归方法

    phpchina上有个名人叫大白菜心,经常会拿这个事来说事。传统处理会把斐波那契数列用递归来处理,效率慢是必然的。不过他说事说吧,居然不拿出答案来,就有点不厚道了
    2012-02-02
  • 用php过滤危险html代码的函数

    用php过滤危险html代码的函数

    用PHP过滤html里可能被利用来引入外部危险内容的代码。有些时候,需要让用户提交html内容,以便丰富用户发布的信息,当然,有些可能造成显示页面布局混乱的代码也在过滤范围内。
    2008-07-07
  • CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解

    CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解

    CodeIgniter 是一个小巧但功能强大的 PHP 框架。这篇文章主要介绍了CI框架(ajax分页,全选,反选,不选,批量删除)完整代码,需要的朋友可以参考下
    2016-11-11
  • PHP token验证生成原理实例分析

    PHP token验证生成原理实例分析

    这篇文章主要介绍了PHP token验证生成原理,结合实例形式分析了php的token验证原理与使用技巧,需要的朋友可以参考下
    2019-06-06
  • php字符串截取函数用法分析

    php字符串截取函数用法分析

    这篇文章主要介绍了php字符串截取函数用法分析,给出了两个示例,分别讲述了PHP自带的字符串截取函数的用法与自定义函数实现字符串截取的方法,是非常实用的字符串操作技巧,需要的朋友可以参考下
    2014-11-11
  • PHP对象克隆clone用法示例

    PHP对象克隆clone用法示例

    这篇文章主要介绍了PHP对象克隆clone用法,结合实例形式分析了php浅克隆与深克隆的相关概念、特点与实现方法,需要的朋友可以参考下
    2016-09-09
  • PHP面向对象程序设计之命名空间与自动加载类详解

    PHP面向对象程序设计之命名空间与自动加载类详解

    这篇文章主要介绍了PHP面向对象程序设计之命名空间与自动加载类,结合实例形式分析了php命名空间与自动加载类的概念、功能、使用方法与相关注意事项,需要的朋友可以参考下
    2016-12-12

最新评论