php数组排序的各种方法总结_PHP教程
对于php数组排序在php中提供了很多的函数,下面我列出来,不全的大家可以补充。
sort() 函数用于对数组单元从低到高进行排序。
rsort() 函数用于对数组单元从高到低进行排序。
asort() 函数用于对数组单元从低到高进行排序并保持索引关系。
arsort() 函数用于对数组单元从高到低进行排序并保持索引关系。
ksort() 函数用于对数组单元按照键名从低到高进行排序。
krsort() 函数用于对数组单元按照键名从高到低进行排序。
不过今天我们主要是不是讲php自带的数组排序函数主要是讲自定的排序
一、冒泡排序法
说明:找到最大的数,排列到最后面,然后继续找
例:
代码如下 | 复制代码 |
$arr = array(3,5,-1,0,2); for($i=0;$i $temp = $arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$temp; } } } |
理解:
3,5,-1,0,2
//从第一个数开始往后比较,如果比后面的数大则与后面的数调位置
//第一次,3小于5,那么不变
//第二次,5大于-1,那么变成
3,-1,5,0,2
//第三次,5大于0
3,-1,0,5,2
//第四次,5大于2
3,-1,0,2,5
至此完成一次内循环,此时最后一个数完成排序,下次将不参与
3,-1,0,2,5第二次外循环开始 第一次:3大于-1
-1,3,0,2,5
第二次:3大于0
-1,0,3,2,5
第三次:3大于2
-1,0,2,3,5
至此完成后面两位数的排序了,接下来类推
-1,0,2,3,5
二、选择排序法 说明:先假设第一个数就是最小的数,然后将后面的数依次与它比较,如果假设的数不是最小的数,就将它与后面的最小的数调换位置
代码如下 | 复制代码 |
$arr=array(2,1,-1,3,0); for($i=0;$i $minindex = $i; for($j=1+$i;$j $minindex = $j; } } $temp = $arr[$i]; $arr[$i] = $arr[$minindex]; $arr[$minindex] = $temp; } |
理解:
2,1,-1,3,0
//先假设第一个数2为最小值,它后面的数依次与2做比较,寻找到最小的那个数
过程:
1小于2,那么minval=1
-1小于1,那么minval=-1
3大于-1,不变
0大于-1,不变
那么现在就找到了该数组中最小的数了为-1
将-1与2调换位置就完成第一个数的排序了
那么现在数组变成
-1,1,2,3,0
现在第一个数-1已经为有序,所以不参与比较了,往后面继续
现在假设minval=1
2大于1,不变
3大于1,不变
0小于1,那么minval=0
现在一次循环完成,调换0与1的位置完成第二个数的排序
那么现在数组变成
-1,0,2,3,1
//后面的推法与上面相同。。。
三、插入排序法说明:先假设一个数组中的第一个数为单独的有序数组,再将后面的一个数与它【这里随它I的增长,就变成它们了】做比较,如果后面的数比假设的数还小,则将小的那个数后移,最后将那个数移到最前面
代码如下 | 复制代码 |
$arr=array(2,1,-1,3,0); for($i=1;$i $insertindex = $i-1; while($insertindex>=0 && $insertval $arr[$insertindex+1]=$arr[$insertindex]; $insertindex--; } $temp = $arr[$i]; $arr[$insertindex+1]=$insertval; } |
理解:
2,1,-1,3,0
//第一次,先保存待插入的数1为insertval,再拿 insertval 与2比较,1小于2,所以把2后移,变成如下的图
2,2,-1,3,0
//此时2前面没有数字了,insertindex=0,所以比较完成,那么将insertval插入到寻找到的这个位置。变成如下图
1,2,-1,3,0
//此时,1,2变成有序数组
//第二次,先保存待插入的数-1为insertval,再拿insertval与2做比较,-1小于2,所以把2后移,变成如下图
1,2,2,3,0
//此时,再拿insertval与1做比较,-1小于1,那么把-1后移,变成如下图(这就是一个拿待插入数与前面的有序数组比较的过程)
1,1,2,3,0
//此时,insertindex到头了,所以将insertval插入该位置
-1,1,2,3,0
//后面推法如上
二维数组排序函数,可以实现类似 MySQL 的 ORDER BY 效果,当数组不是从数据库取得时会有特殊应用。
代码如下 | 复制代码 |
// 说明:PHP中二维数组的排序方法 |
至于一维数组排序我们用php自带的函数就可以完全实现数据排序了,所以我们讲到的都是相对用自定函数无法完成我们需求的做法了。
上一篇: 用Yii自带的命令行创建应用的方法
下一篇: MongoDB索引概念及使用详解
推荐阅读
-
将PHP应用无缝转移到IIS中的方法_PHP教程
-
php数组排序的各种方法总结_PHP教程
-
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址),_PHP教程
-
php查找数组元素各种方法总结
-
php中数组排序各种方法_PHP教程
-
Yii2 GridView实现列表页直接修改数据的方法,yii2gridview_PHP教程
-
php中文数组排序方法示例
-
php中array_multisort对多维数组排序的方法,arraymerge多维数组_PHP教程
-
腾讯微博提示missing parameter errorcode 102 错误的解决方法,parametererrorcode_PHP教程
-
PHP开启PDO和PDO_MySQL扩展的方法_PHP教程