首页技术php冒泡排序 php实现冒泡排序

php冒泡排序 php实现冒泡排序

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

这篇文章给大家聊聊关于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要有哪些基础

学习 PHP需要掌握以下基础内容:

计算机科学基础计算机基础知识:需了解计算机硬件(如 CPU、内存、存储设备等)、软件(操作系统、应用程序等)以及网络(网络拓扑、网络协议等)的基本概念。这些知识是理解计算机系统运行机制的基础,有助于后续学习 PHP在不同环境下的部署和运行。算法和数据结构:理解常见算法(如排序算法中的冒泡排序、快速排序,搜索算法中的二分搜索等)和数据结构(如栈、队列、链表、树等)。掌握它们能帮助编写高效、可维护的 PHP代码,例如在处理大量数据时选择合适的排序算法可提高程序性能。逻辑思维:具备分析问题、解决问题和设计高效解决方案的能力。在编写 PHP程序时,需要运用逻辑思维将复杂问题分解为简单步骤,设计合理的程序流程,以实现预期功能。网络知识HTTP和 HTML:了解 Web服务器和客户端之间的通信协议 HTTP,包括请求方法(GET、POST等)、状态码(200、404等)等;掌握超文本标记语言 HTML的基础知识,如标签、表单等。因为 PHP主要用于开发 Web应用程序,理解 HTTP和 HTML能更好地与前端进行交互,处理用户请求和返回响应。域名和 DNS:熟悉域名系统(DNS)及其在域名解析中的作用。当开发涉及域名访问的 PHP网站时,需要了解 DNS如何将域名转换为 IP地址,以便正确配置服务器和域名解析。编程基础基本编程概念:了解变量(用于存储数据的容器)、数据类型(如整数、字符串、布尔值等)、控制流(如条件语句 if- else、循环语句 for、while等)和函数(用于封装可重复使用的代码块)。这些是编程的基础元素,掌握它们才能编写出基本的 PHP程序。面向对象编程(OOP):掌握对象、类和继承等 OOP原则。PHP支持面向对象编程,使用 OOP可以提高代码的可维护性、可扩展性和复用性,例如通过继承可以避免重复编写相同的代码。代码控制版本:熟悉 Git或 Subversion等代码控制系统。在团队协作开发 PHP项目时,代码控制系统可以记录代码的修改历史,方便多人协同工作、代码合并和版本回滚。数据库SQL:了解结构化查询语言(SQL)的基础知识,包括创建数据库和表(CREATE DATABASE、CREATE TABLE)、修改表结构(ALTER TABLE)、插入数据(INSERT INTO)、更新数据(UPDATE)、查询数据(SELECT)和删除数据(DELETE)等操作。PHP通常与数据库配合使用,通过 SQL语句实现对数据库的操作。关系数据库管理系统(RDBMS):熟悉 MySQL或 PostgreSQL等 RDBMS的概念和架构。RDBMS是用于管理关系数据库的软件系统,了解其特点和使用方法,能更好地选择适合项目的数据库,并进行数据库的配置和管理。其他文本编辑器或 IDE:选择一个舒适的文本编辑器或集成开发环境(IDE),例如 Visual Studio Code或 PHPStorm。它们提供了代码编辑、调试、自动补全等功能,能提高开发效率。调试工具:了解 Xdebug或 PHP Debug Bar等调试工具的使用方法。在开发过程中,难免会出现错误,使用调试工具可以快速发现和修复代码中的错误,提高代码质量。文档阅读能力:能够阅读和理解 PHP文档、教程和代码示例。PHP官方文档提供了详细的语言规范、函数说明和使用示例,通过阅读文档可以快速掌握 PHP的使用方法,解决开发中遇到的问题。

关于php冒泡排序,php实现冒泡排序的介绍到此结束,希望对大家有所帮助。

php是什么语言哪个软件,python语言菜鸟驿站 开个菜鸟驿站要多少钱