首页 开发编程 正文

php排序怎么写 php快速排序对应的知识点

1、PHP实现常见的排序算法2、PHP实现的自定义数组排序函数与排序类示例3、php如何排序置顶PHP实现常见的排序算法注:下面的排序全为正序(从小到大排序)假设有一个数组[a,d]冒泡排序依次比较相邻的两个元素,排序n个项目要Ο(nlogn)次比较。快速排序通常明显比其他Ο(nlogn)算法更快。递归地(recursive)把小于基...

本篇文章给大家谈谈php排序怎么写,以及php 快速排序对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录:

PHP实现常见的排序算法

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

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

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

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

2,比较a,c这两个元素,如果ac,则位置不变,数组变为:[b,a,c,d]

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

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

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

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

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

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

插入排序步骤大致如下:

快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性。

步骤:

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

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

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

PHP实现的自定义数组排序函数与排序类示例

本文实例讲述了PHP实现的自定义数组排序函数与排序类。分享给大家供大家参考,具体如下:

/*

*

二维数组自定义排序函数

*

uasort($arr,function_name)

*

**/

$arr

=

array(

array('a'=1,'b'='c'),

array('a'=4,'b'='a'),

array('a'=5,'b'='g'),

array('a'=7,'b'='f'),

array('a'=6,'b'='e')

);

function

compare_arr($x,$y){

if($x['b']$y['b']){

return

-1;

}else

if($x['b']$y['b']){

return

1;

}else{

return

0;

}

}

uasort($arr,'compare_arr');

foreach($arr

as

$a){

echo

$a['a'].'='.$a['b'].'br/';

}

手册里的自定义排序类:

class

multiSort

{

var

$key;

//key

in

your

array

//排序函数

参数依次是

数组

待排列索引

排序类型

function

run

($myarray,

$key_to_sort,

$type_of_sort

=

'')

{

$this-key

=

$key_to_sort;

if

($type_of_sort

==

'desc')

uasort($myarray,

array($this,

'myreverse_compare'));

else

uasort($myarray,

array($this,

'mycompare'));

return

$myarray;

}

//正序

function

mycompare($x,

$y)

{

if

(

$x[$this-key]

==

$y[$this-key]

)

return

0;

else

if

(

$x[$this-key]

$y[$this-key]

)

return

-1;

else

return

1;

}

//逆序

function

myreverse_compare($x,

$y)

{

if

(

$x[$this-key]

==

$y[$this-key]

)

return

0;

else

if

(

$x[$this-key]

$y[$this-key]

)

return

-1;

else

return

1;

}

}

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《php字符串(string)用法总结》、《PHP针对XML文件操作技巧总结》、《PHP错误与异常处理方法总结》、《PHP运算与运算符用法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

php如何排序置顶

 第一步,在文章表里面建两个字段,用于做置顶功能。一个是top字段,timestamp类型,默认选“定义”,用于存储置顶操作的时间;还有一个flag字段,int类型,用于判断是否置顶,置顶为1,否则为0。。

第二步,模板页面修改。列表选项里面加置顶列,下面对应的行写如下代码:

td class="center" {{if $logs[data].flag}} a href="JavaScript:void(0);" onclick="istop('{{$logs[data].id}}',0)"取消置顶/a{{else}} a href="javascript:void(0);" onclick="istop('{{$logs[data].id}}',1)"置顶/a{{/if}}/td

就是用flag判断是否置顶了。

页面对应的置顶js:

function istop(id,flag){

$.ajax({

type: "POST",

url: "?m={{'article'|encrypt}}a=savePost",data: "id="+id+"flag="+flag,

dataType:"json",

success: function(msg){

if(msg.status == "true")

{

window.location= '?m={{'article'|encrypt}}';}

else

{

alert(msg.message);

}

}

});

}

第三步,程序里只要稍作修改即可。先按是否置顶排序,再按置顶时间排序,再按默认的排序。

$sql .=" ORDER BY flag DESC,top DESC,id DESC ";(还记得我们添加的字段吗?)

这样就完成了文章置顶的功能。

关于php排序怎么写和php 快速排序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文转载自互联网,如有侵权,联系删除