當前位置:首頁 » 編程語言 » 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)把小於基準值元素的子數列和大於基準值元素的子數列排序。

熱點內容
linux下的程序開發 發布:2025-05-19 18:55:02 瀏覽:926
該文件夾未包含 發布:2025-05-19 18:54:17 瀏覽:194
安卓拳皇對戰用哪個平台 發布:2025-05-19 18:42:39 瀏覽:530
華為暢玩5怎麼取消鎖屏密碼 發布:2025-05-19 18:42:38 瀏覽:582
linuxrm文件夾 發布:2025-05-19 18:40:25 瀏覽:972
譚浩強c語言錯誤 發布:2025-05-19 18:39:33 瀏覽:951
安卓和蘋果用流量哪個劃算 發布:2025-05-19 18:38:04 瀏覽:408
安卓手機怎麼設定背景牆 發布:2025-05-19 18:29:40 瀏覽:1001
androidstudio斷點調試 發布:2025-05-19 18:20:23 瀏覽:766
abaqus如何配置證書 發布:2025-05-19 18:19:38 瀏覽:583