php中的一些数组排序方法分享

 更新时间:2012年07月20日 14:44:47   作者:  
php中的一些数组排序方法分享,需要的朋友可以参考下
A.内部排序(直接加载到内存进行排序):包括交换式排序(冒泡和快速法)、选择式排序、插入式排序
B.外部排序(因数据量大,需借助外部存储进行排序):包括合并排序、直接合并排序

【冒泡排序:从后向前,依次比较相邻元素的排序码,若发现逆序则交换,一轮结束后,再来一轮,直到所有相邻数无逆序,即按顺序排完】
复制代码 代码如下:

function maoPao($arr,$style)//【默认传递的是值,不是地址。如果在$arr前加个&,则和$arr1指向同一个地址,函数外的$arr1也被排好了】
{
$temp=0;
$flag=false;
for($i=0;$i<count($arr)-1;$i++)
{
for($j=0;$j<count($arr)-1-$i;$j++)
{
if($style=='bts') $op=$arr[$j]<$arr[$j+1];
else if($style=='stb') $op=$arr[$j]>$arr[$j+1];
if($op)
{
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
$flag=true;
}
}
if($flag==false)
{
break;//当一次横向循环下来flag==false;说明纵向循环里每次相邻元素比较大小时if条件均不满足,即从小到大已排好,无需再横向循环
}
}
foreach ($arr as $key => $value)
{
echo $value.',';
}
}
$arr1=array(101,101,-9,-8,0,76,1,57,43,90,23,-56);
maoPao($arr1,'stb');//small to big

【选择排序:第二个数至第n个数分别与第一个数比较,进行交换,第三个数至第n个数分别与第二个数比较,进行交换,直到排完】
复制代码 代码如下:

function selectSort($arr,$style)
{
$temp=0;
$flag=false;
for($i=0;$i<count($arr)-1;$i++)
{
for($j=$i+1;$j<count($arr);$j++)
{
if($style=='bts') $op=$arr[$i]<$arr[$j];
else if($style=='stb') $op=$arr[$i]>$arr[$j];
if($op)
{
$temp=$arr[$i];
$arr[$i]=$arr[$j];
$arr[$j]=$temp;
$flag=true;
}
}
if($flag==false)
{
break;
}
}
foreach ($arr as $key => $value)
{
echo $value.',';
}
}
$arr1=array(21.5,33,90,7,-4,5,55,11);
selectSort($arr1,'stb');

复制代码 代码如下:

function selectSort($arr,$style)
{
$temp=0;
$flag=false;
for($i=0;$i<count($arr)-1;$i++)
{
for($j=$i+1;$j<count($arr);$j++)
{
if($style=='bts') $op=$arr[$i]<$arr[$j];
else if($style=='stb') $op=$arr[$i]>$arr[$j];
if($op)
{
$temp=$arr[$i];
$arr[$i]=$arr[$j];
$arr[$j]=$temp;
$flag=true;
}
}
if($flag==false)
{
break;
}
}
foreach ($arr as $key => $value)
{
echo $value.',';
}
}
$arr1=array(21.5,33,90,7,-4,5,55,11);
selectSort($arr1,'stb');
echo "<br/>";

相关文章

  • 防止用户利用PHP代码DOS造成用光网络带宽

    防止用户利用PHP代码DOS造成用光网络带宽

    一打开IIS,服务器的流出带宽就用光-----就是说服务器不断向别人发包,这个情况和受到DDOS攻击是不同的,DDOS是不断收到大量数据包.
    2011-03-03
  • PHP使用HTML5 FormData对象提交表单操作示例

    PHP使用HTML5 FormData对象提交表单操作示例

    这篇文章主要介绍了PHP使用HTML5 FormData对象提交表单操作,结合实例形式分析了PHP使用HTML5 FormData对象提交表单的具体原理、实现方法及相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • php检查是否是ajax请求的方法

    php检查是否是ajax请求的方法

    这篇文章主要介绍了php检查是否是ajax请求的方法,涉及预定义服务器变量的使用技巧,非常简单实用,需要的朋友可以参考下
    2015-04-04
  • WordPress开发中用于获取近期文章的PHP函数使用解析

    WordPress开发中用于获取近期文章的PHP函数使用解析

    这篇文章主要介绍了WordPress开发中用于获取近期文章的PHP函数使用解析,即对wp_get_recent_posts函数的使用方法介绍,需要的朋友可以参考下
    2016-01-01
  • php变量范围介绍

    php变量范围介绍

    变量的范围即它定义的上下文背景(也就是它生效的范围)。大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件
    2012-10-10
  • php阳历转农历优化版

    php阳历转农历优化版

    这篇文章主要为大家详细介绍了php阳历转农历代码,优化版的农历阳历转换php代码,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • PHP文件上传问题汇总(文件大小检测、大文件上传处理)

    PHP文件上传问题汇总(文件大小检测、大文件上传处理)

    这篇文章主要介绍了PHP文件上传问题汇总,包括文件大小检测、大文件上传处理,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • PHP扩展mcrypt实现的AES加密功能示例

    PHP扩展mcrypt实现的AES加密功能示例

    这篇文章主要介绍了PHP扩展mcrypt实现的AES加密功能,结合实例形式分析了php基于mcrypt实现AES加密的相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • 9段PHP实用功能的代码推荐

    9段PHP实用功能的代码推荐

    本文是记录一下小编常用的几段实用的代码,做项目的时候经常会用到,这里推荐给大家,大家可以随意扩展
    2014-10-10
  • Ajax+PHP实现的模拟进度条功能示例

    Ajax+PHP实现的模拟进度条功能示例

    这篇文章主要介绍了Ajax+PHP实现的模拟进度条功能,结合实例形式分析了php结合ajax动态读取文件实现进度条功能的相关操作技巧,需要的朋友可以参考下
    2019-02-02

最新评论