首页技术php排序函数,php排序算法

php排序函数,php排序算法

编程之家2026-06-30850次浏览

大家好,今天小编来为大家解答以下的问题,关于php排序函数,php排序算法这个很多人还不知道,现在让我们一起来看看吧!

php排序函数,php排序算法

php几种排序算法实例详解

四种排序算法的PHP实现:

1)插入排序(InsertionSort)的基本思想是:

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

2)选择排序(SelectionSort)的基本思想是:

每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。

3)冒泡排序的基本思想是:

php排序函数,php排序算法

两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。

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

1.sort.php文件如下:

<?php

classSort{

private$arr=array();

php排序函数,php排序算法

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_dump($config['arr']);

var_dump($sort->display());

/*Endofphp*/

php 数组有两个元素怎样用sort排序

php的数组分为数字索引型的数组,和关键字索引的数组。

如果是数字索引的,可以这样使用:

$names= ['Tom','Rocco','amiona'];

sort($names);

sort()函数只接收数组这个一个参数,默认排序方式是按照字母升序排列,因为是区分大小写的,所以大写字母在前,小写字母在后。

以上排序的结果是:['Rocco','Tom','amiona']

如果还有不明白的欢迎追问!

PHP中的函数

ThinkPHP中 C(),D(),S()

1.在具体的Action方法里面,可以用C()对某些参数进行动态配置,主要指那些还没有使用的参数。具体用法如下:

C('参数名称');//获取已经设置的参数值

C('参数名称','新的参数值');//设置新的值

2.D()函数的使用:

先定义好模型类,如UserModel,然后就可以用D()函数对数据进行操作了。例如:

先在"你的项目"\Lib\Model下建立一个名为UserModel.class.php的PHP脚本,内容如下:

class UserModel extends Model{}

然后,无需增加任何属性和方法,就可以进行如下操作:

$User= D("User");//实例化User对象,User是你在数据库建立的一个名为"前缀_user"的数据表

也可以用$User= new UserModel()代替,进行实例化对象的操作。

实例化之后,就可以对数据进行增删查改等一系列操作了,如:

$User->find(1);//查找主键为1的记录

3.S()函数的使用:

ThinkPHP把各种缓存方式都抽象成统一的缓存类来调用,而且ThinkPHP把所有的缓存机制统一成一个S方法来进行操作,所以在使用

不同的缓存方式的时候并不需要关注具体的缓存细节。如:

S('data',$Data);//使用data标识缓存$Data数据

S('data',$Data,3600);//缓存$Data数据3600秒

$Data= S('data');//获取缓存数据

好了,文章到此结束,希望可以帮助到大家。

jquery最新版本号?ie版本号怎么看嵌入式 为什么不建议学嵌入式