您当前的位置:首页 > 互联网教程

php几种排序算法实例详解

发布时间:2025-05-24 09:33:10    发布人:远客网络

php几种排序算法实例详解

一、php几种排序算法实例详解

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

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

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

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

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

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

private$sort='insert';

private$marker='_sort';

'arr'=>array(22,3,41,18),//需要排序的数组值

'sort'=>'insert',//可能值:insert,select,bubble,quick

'debug'=>TRUE//可能值:TRUE,FALSE

publicfunctionconstruct($config=array()){

privatefunction_init($config=array()){

if(!is_array($config)ORcount($config)==0){

$this->_log("sort_init_param_invaild");

foreach($configas$key=>$val){

$method=$this->sort.$this->marker;

if(!method_exists($this,$method)){

$this->_log("sort_method_invaild");

if(FALSE===($this->arr=$this->$method($this->arr)))

privatefunctioninsert_sort($arr){

if(!is_array($arr)ORcount($arr)==0){

$this->_log("sort_array(insert)_invaild");

privatefunctionselect_sort($arr){

if(!is_array($arr)ORcount($arr)==0){

$this->_log("sort_array(select)_invaild");

for($i=0;$i<$count-1;$i++){

for($j=$i+1;$j<$count;$j++){

if($arr[$min]>$arr[$j])$min=$j;

privatefunctionbubble_sort($arr){

if(!is_array($arr)ORcount($arr)==0){

$this->_log("sort_array(bubble)_invaild");

for($j=$count-1;$j>$i;$j--){

privatefunctionquick_sort($arr){

if(count($arr)<=1)return$arr;

for($i=1;$i<count($arr);$i++){

$left_arr=$this->quick_sort($left_arr);

$right_arr=$this->quick_sort($right_arr);

returnarray_merge($left_arr,array($key),$right_arr);

$msg='date['.date('Y-m-dH:i:s').']'.$msg.'\n';

return@file_put_contents('sort_err.log',$msg,FILE_APPEND);

require_once('sort.php');

'arr'=>array(23,22,41,18,20,12,200303,2200,1192),

'sort'=>'select',

//可能值:insert,select,bubble,quick

//var_dump($config['arr']);

var_dump($sort->display());

二、php:树形结构的算法

1、产品分类,多级的树状结构的论坛,邮件列表等许多地方我们都会遇到这样的问题:如何存储多级结构的数据?

2、在PHP的应用中,提供后台数据存储的通常是关系型数据库,它能够保存大量的数据,提供高效的数据检索和更新服务。然而关系型数据的基本形式是纵横交错的表,是一个平面的结构,如果要将多级树状结构存储在关系型数据库里就需要进行合理的翻译工作。接下来我会将自己的所见所闻和一些实用的经验和大家探讨一下。

3、层级结构的数据保存在平面的数据库中基本上有两种常用设计方法:

4、毗邻目录模式(adjacency list model)

5、预排序遍历树算法(modified preorder tree traversal algorithm)

6、我不是计算机专业的,也没有学过什么数据结构的东西,所以这两个名字都是我自己按照字面的意思翻的,如果说错了还请多多指教。

7、这两个东西听着好像很吓人,其实非常容易理解。这里我用一个简单食品目录作为我们的示例数据。我们的数据结构是这样的:

8、为了照顾那些英文一塌糊涂的PHP爱好者

三、怎么用php编写加减乘除

1、PHP的加密函数有crypt()、 md5()和sha1()这3种,其中crypt()用于单向加密,所谓的单向加密就是将需要加密的内容进行加密之后,无法将密文转换成为可读的内容,因此单向加密的应用范围较狭窄,一般用于用户名认证和密码输入等情况。

2、当用户进入系统时,只需要将密文口令输入,经过系统验证与存储的口令一致,即可通过。

3、sha1()函数使用了SHA-1的散列算法,其原理与md5()类似。

4、参考资料来源:百度百科-PHP(超文本预处理器)