Login
网站首页 > 文章中心 > 其它

php版本常用的排序算法汇总

作者:小编 更新时间:2023-08-02 14:24:50 浏览量:130人看过

PHP实现常见的排序算法

注:为方便描述,下面的排序全为正序(从小到大排序)

假设有一个数组[a,b,c,d]

冒泡排序依次比较相邻的两个元素,如果前面的元素大于后面的元素,则两元素交换位置;否则,位置不变.具体步骤:

①.,比较a,b这两个元素,如果ab,则交换位置,数组变为:[b,a,c,d]

完成第一轮比较后,可以发现最大的数c已经排(冒)在最后面了,接着再进行第二轮比较,但第二轮比较不必比较最后一个元素了,因为最后一个元素已经是最大的了.

第二轮比较结束后,第二大的数也会冒到倒数第二的位置.

依次类推,再进行第三轮,,,

php版本常用的排序算法汇总-图1

就这样最大的数一直往后排(冒),最后完成排序.所以我们称这种排序算法为冒泡排序.

选择排序是一种直观的算法,每一轮会选出列中最小的值,把最小值排到前面.具体步骤如下:

插入排序步骤大致如下:

步骤:

从数列中挑出一个元素,称为 "基准"(pivot),

重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边).在这个分区退出之后,该基准就处于数列的中间位置.这个称为分区(partition)操作.

递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序.

最常见的算法,用PHP如何实现

①.、冒泡排序

function?bubble_sort($arr)?{

$n=count($arr);

for($i=0;$i$n-1;$i?){

for($j=$i?1;$j$n;$j?)?{

if($arr[$j]$arr[$i])?{

$temp=$arr[$i];

$arr[$i]=$arr[$j];

$arr[$j]=$temp;

}

return?$arr;

function?Merge($arr,?$left,?$mid,?$right)?{

$i?=?$left;

$j?=?$mid?1;

$k?=?0;

$temp?=?array();

while?($i?=?$mid?$j?=?$right)

{

if?($arr[$i]?=?$arr[$j])

$temp[$k?]?=?$arr[$i?];

else

$temp[$k?]?=?$arr[$j?];

while?($i?=?$mid)

while?($j?=?$right)

for?($i?=?$left,?$j?=?0;?$i?=?$right;?$i?,?$j?)

$arr[$i]?=?$temp[$j];

function?MergeSort($arr,?$left,?$right)

if?($left?$right)

MergeSort($arr,?$left,?$mid);

MergeSort($arr,?$mid?1,?$right);

Merge($arr,?$left,?$mid,?$right);

function?bin_search($arr,$low,$high,$value)?{

if($low$high)

return?false;

else?{

if($value==$arr[$mid])

return?$mid;

elseif($value$arr[$mid])

return?bin_search($arr,$low,$mid-1,$value);

return?bin_search($arr,$mid?1,$high,$value);

while($low=$high)?{

$high=$mid-1;

$low=$mid?1;

function?quick_sort($arr)?{

if($n=1)

$key=$arr[0];

$left_arr=array();

$right_arr=array();

for($i=1;$i$n;$i?)?{

if($arr[$i]=$key)

$left_arr[]=$arr[$i];

$right_arr[]=$arr[$i];

$left_arr=quick_sort($left_arr);

$right_arr=quick_sort($right_arr);

return?array_merge($left_arr,array($key),$right_arr);

function?select_sort($arr)?{

for($i=0;$i$n;$i?)?{

$k=$i;

if($arr[$j]$arr[$k])

$k=$j;

if($k!=$i)?{

$arr[$i]=$arr[$k];

$arr[$k]=$temp;

function?insertSort($arr)?{

$tmp=$arr[$i];

$j=$i-1;

while($arr[$j]$tmp)?{

$arr[$j?1]=$arr[$j];

$arr[$j]=$tmp;

$j--;

if($j0)

break;

php数组排序有很多的方法,哪位可以详细的分解一二吗,如用函数和不用函数.

在php数组排序中我们通常会用到下列几个函数.

sort() ------ 以升序对数组排序,是以元素值来排序的

rsort() ----- 以降序对数组排序,以元素值来排序.

asort() ----- 根据值,以升序对关联数组进行排序

ksort() ----- 根据键,以升序对关联数组进行排序

arsort() ---- 根据值,以降序对关联数组进行排序

krsort() ---- 根据键,以降序对关联数组进行排序

array_multisort()----对多个数组或多维数组进行排序

用sort函数来做下示例吧

php

$string=array("Yes","True","False");

sort($string);

print_r($string);

再来看一个array_multisort的例子了,

$att[] = array('name' = 'dog', 'number' = 1);

array_multisort($att,SORT_DESC,SORT_REGULAR);

print_r($att);

输出结果为:

Array (

[1] = Array ( [name] = dog [number] = 1 )

)

不用数组的来个例子了.

for($i=0;$icount($att);$i++){

foreach($att as $key=$val){

if($att[$i]['number']$val['number']){

$att[$key]=$att[$i];

$att[$i]=$val;

结果:

当然还有更多的方法,如插入排序,选择排序,冒泡排序,快速排序等.这些网站有很多的,如这个网站上就有:至于数组和字符串的话,主要有str_split()、explode(),preg_split()三个函数.当然还有别的方法,上面那个网我站有说到,你可以自己去找一找了.

php几种排序算法实例详解

下面给你介绍四种排序方法:

①.) 插入排序(Insertion Sort)的基本思想是:?

每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止.实现代码如下:

每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕.实现代码如下:

两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止.实现代码如下:

以上就是土嘎嘎小编为大家整理的php版本常用的排序算法汇总相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章