当前位置:首页 » 编程语言 » php表头排序

php表头排序

发布时间: 2023-05-23 16:10:17

‘壹’ php几种排序算法实例详解

四种排序算法的PHP实现:
1)插入排序(InsertionSort)的基本思想是:
每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。

2)选择排序(SelectionSort)的基本思想是:
每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。

3)冒泡排序的基本思想是:
两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。

4)快速排序实质上和冒泡排序一样,都是属于交换排序的一种应用。所以基本思想和上面的冒泡排序是一样的。

1.sort.php文件如下:

<?php
classSort{
private$arr=array();
private$sort='insert';
private$marker='_sort';
private$debug=TRUE;
/**
*构造函数
*
*@paramarray例如:
$config=array(
'arr'=>array(22,3,41,18),//需要排序的数组值
'sort'=>'insert',//可能值:insert,select,bubble,quick
'debug'=>TRUE//可能值:TRUE,FALSE
)
*/
publicfunctionconstruct($config=array()){
if(count($config)>0){
$this->_init($config);
}
}
/**
*获取排序结果
*/
publicfunctiondisplay(){
return$this->arr;
}
/**
*初始化
*
*@paramarray
*@returnbool
*/
privatefunction_init($config=array()){
//参数判断
if(!is_array($config)ORcount($config)==0){
if($this->debug===TRUE){
$this->_log("sort_init_param_invaild");
}
returnFALSE;
}
//初始化成员变量
foreach($configas$key=>$val){
if(isset($this->$key)){
$this->$key=$val;
}
}
//调用相应的成员方法完成排序
$method=$this->sort.$this->marker;
if(!method_exists($this,$method)){
if($this->debug===TRUE){
$this->_log("sort_method_invaild");
}
returnFALSE;
}
if(FALSE===($this->arr=$this->$method($this->arr)))
returnFALSE;
returnTRUE;
}
/**
*插入排序
*
*@paramarray
*@returnbool
*/
privatefunctioninsert_sort($arr){
//参数判断
if(!is_array($arr)ORcount($arr)==0){
if($this->debug===TRUE){
$this->_log("sort_array(insert)_invaild");
}
returnFALSE;
}
//具体实现
$count=count($arr);
for($i=1;$i<$count;$i++){
$tmp=$arr[$i];
for($j=$i-1;$j>=0;$j--){
if($arr[$j]>$tmp){
$arr[$j+1]=$arr[$j];
$arr[$j]=$tmp;
}
}
}
return$arr;
}
/**
*选择排序
*
*@paramarray
*@returnbool
*/
privatefunctionselect_sort($arr){
//参数判断
if(!is_array($arr)ORcount($arr)==0){
if($this->debug===TRUE){
$this->_log("sort_array(select)_invaild");
}
returnFALSE;
}
//具体实现
$count=count($arr);
for($i=0;$i<$count-1;$i++){
$min=$i;
for($j=$i+1;$j<$count;$j++){
if($arr[$min]>$arr[$j])$min=$j;
}
if($min!=$i){
$tmp=$arr[$min];
$arr[$min]=$arr[$i];
$arr[$i]=$tmp;
}
}
return$arr;
}
/**
*冒泡排序
*
*@paramarray
*@returnbool
*/
privatefunctionbubble_sort($arr){
//参数判断
if(!is_array($arr)ORcount($arr)==0){
if($this->debug===TRUE){
$this->_log("sort_array(bubble)_invaild");
}
returnFALSE;
}
//具体实现
$count=count($arr);
for($i=0;$i<$count;$i++){
for($j=$count-1;$j>$i;$j--){
if($arr[$j]<$arr[$j-1]){
$tmp=$arr[$j];
$arr[$j]=$arr[$j-1];
$arr[$j-1]=$tmp;
}
}
}
return$arr;
}
/**
*快速排序
*@bywww.5wx.org
*@paramarray
*@returnbool
*/
privatefunctionquick_sort($arr){
//具体实现
if(count($arr)<=1)return$arr;
$key=$arr[0];
$left_arr=array();
$right_arr=array();
for($i=1;$i<count($arr);$i++){
if($arr[$i]<=$key)
$left_arr[]=$arr[$i];
else
$right_arr[]=$arr[$i];
}
$left_arr=$this->quick_sort($left_arr);
$right_arr=$this->quick_sort($right_arr);

returnarray_merge($left_arr,array($key),$right_arr);
}
/**
*日志记录
*/
privatefunction_log($msg){
$msg='date['.date('Y-m-dH:i:s').']'.$msg.' ';
return@file_put_contents('sort_err.log',$msg,FILE_APPEND);
}
}
/*Endoffilesort.php*/
/*Locationhtdocs/sort.php*/
2.sort_demo.php文件如下:

<?php
require_once('sort.php');
$config=array(
'arr'=>array(23,22,41,18,20,12,200303,2200,1192),
//需要排序的数组值
'sort'=>'select',
//可能值:insert,select,bubble,quick
'debug'=>TRUE
//可能值:TRUE,FALSE
);
$sort=newSort($config);
//var_mp($config['arr']);
var_mp($sort->display());
/*Endofphp*/

‘贰’ php倒序排列和正序排列

  • 可以在后台对栏目进行排序.栏目管理那里。

  • 使用函数颠倒数组,$arrchildid实际上是个数组。

  • loop就是php里的foreach。

‘叁’ php怎么实现点击表头信息按表头字段顺序或倒序排序 代码

如果是java里面的话,只要对象继承compator接口,重写里面的排序方法,就可以进行排序的。

‘肆’ php怎么在网页上点击表头进行排序

就散敬是Ajax异步的问题,当你点击虚姿到某一个按钮,传一个值过去,php里面进行判断,是否存在这个值,如果存在,则sql语句中加入order(时间排序或者id排序任冲誉慎意的),如果没有,则默认是没有排序的

‘伍’ PHP数据处理,排序问题

1. 服务器端排序, 你的方法是其中之一
2. 浏览器端排序, 可以衫行用jsp实现. 我曾经用jquery做过类似的功能, 挺简单的:
方法:
保存数据到二维表,
定义click事件:
按点击的字段排序, 按顺序生成每一散塌闹行的html代码, 清空原来的html代码冲罩, 加入新生成的顺序html代码

‘陆’ 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 读取数据库里数据后 页面的表头点击排序的问题

$order = isset($_GET['order']) && ($_GET['order'] == 'asc') ? 'asc' : 'desc';

接液历答收order参数用于查闹慧询

$order_hit = $order == '烂迟asc' ? 'desc' : 'asc';

echo '<a href="xxx.php?order='.$order_hit.'">... ...</a>';

大概就是这样。

‘捌’ php怎么在网页上点击表头进行排序

$order = isset($_GET['order']) && ($_GET['order'] == 'asc') ? 'asc' : 'desc';
接收order参数用于查询
$order_hit = $order == 'asc' ? 'desc' : 'asc';//升序降序的缓或迹互相切换
echo '团卖<a href="xxx.php?order='.$order_hit.'扰并">... ...</a>';

‘玖’ php怎么在网页上点击表头进行升序或降序排序的方法

这个需要使用ajax
为了表头添加局尘信点击事件桐轮。
然后通过ajax获取当前排序的方式。
然后将获取的兄源数据处理、添加到表中

‘拾’ PHP实现常见的排序算法

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

假设有一个数组[a,b,c,d]
冒泡排序依次比较相邻的两个元素,如果前面的元素大于后面的元素,则两元素交换位置;否则,位置不变。具体步骤:
1,比较a,b这两个元素,如果a>b,则交换位置,数组变为:[b,a,c,d]
2,比较a,c这两个元素,如果a<c,则位置不变,数组变为:[b,a,c,d]
3,比较c,d这两个元素,如果c>d,则交换位置,数组变为:[b,a,d,c]
完成第一轮比较后,可以发现最大的数c已经排(冒)在最后面了,接着再进行第二轮比较,但第二轮比较不必比较最后一个元素了,因为最后一个元素已经是最大的了。
第二轮比较结束后,第二大的数也会冒到倒数第二的位置。
依次类推,再进行第三轮,,,
就这样最大的数一直往后排(冒),最后完成排序。所以我们称这种排序算法为冒泡排序。

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

插入排序步骤大致如下:

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

步骤:
从数列中挑出一个元素,称为 “基准”(pivot),
重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

热点内容
灯带编程软件 发布:2025-05-19 19:32:30 浏览:285
如何判断服务器被多少人访问 发布:2025-05-19 19:27:45 浏览:123
编程stata 发布:2025-05-19 19:12:18 浏览:513
解压命令gz 发布:2025-05-19 19:11:37 浏览:823
linux下的程序开发 发布:2025-05-19 18:55:02 浏览:927
该文件夹未包含 发布:2025-05-19 18:54:17 浏览:195
安卓拳皇对战用哪个平台 发布:2025-05-19 18:42:39 浏览:531
华为畅玩5怎么取消锁屏密码 发布:2025-05-19 18:42:38 浏览:583
linuxrm文件夹 发布:2025-05-19 18:40:25 浏览:973
谭浩强c语言错误 发布:2025-05-19 18:39:33 浏览:952