PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
发布时间 - 2026-01-10 22:53:34 点击率:次php三种基础算法:冒泡,插入和快速排序法
$array = array(2,3,5,6,9,8,1);
//冒泡排序思想,前后元素比较
function sort_bulldle($array){
$num = count($array);
for($i=0; $i<$num; $i++){
$tmp = $array[$i];
for ($j=$i-1; $j>=0; $j--) {
if ($tmp < $array[$j]) {
$arr[$j+1] = $arr[$j];
$arr[$j] = $tmp;
} else {
break;
}
}
}
return $array;
}
//插入排序思想,就是从第二个元素开始,到最后一个元素都是这个需要排序的元素
function sort_bulldle($arr){
for($i=1, $len=count($arr); $i<$len; $i++) {
$tmp = $arr[$i];
for($j=$i-1;$j>=0;$j--) {
if($tmp < $arr[$j]) {
$arr[$j+1] = $arr[$j];
$arr[$j] = $tmp;
} else {
break;
}
}
}
return $arr;
}
//快速排序,找一个基准点把数组分成两组比较
function sort_bulldle($array){
$num = count($array);
if($num<=1) {
return $array;
}
$base_num = $array[0];
$left_array = array();
$right_array = array();
for($i=1; $i<$num; $i++) {
if ($base_num > $array[$i]) {
$left_array[] = $array[$i];
}else
{
$right_array[] = $array[$i];
}
}
$left_array = sort_bulldle($left_array);
$right_array = sort_bulldle($right_array);
return array_merge($left_array, array($base_num), $right_array);
}
本文实例总结了PHP常用排序算法。分享给大家供大家参考,具体如下:
class bevin{
public $public = 'public';
private $private = 'private';
protected $protected = 'protected';
//final $final = 'final';
static $static = 'static';
function __construct(){
$this->protected = 'change private';
}
public function setValue($a){
self::$static = $a;
}
public function getValue(){
echo $this->private;
}
function __destruct(){
echo 'asdfsadf';
}
}
class paixu {
// 基本排序
public function t_sortArray($array) {
if(is_array($array) && count($array)>1) {
for($i=0; $i<count($array); $i++) {
for($j=($i+1); $j<count($array); $j++) {
$temp = $array[$i];
if($array[$j]<$array[$i]) {
$array[$i] = $array[$j];
$array[$j] = $temp;
}
}
}
return $array;
} else {
return $array;
}
}
// 冒泡排序
public function c_sortArray($array) {
if(!is_array($array) || count($array)<=1){ return $array; }
$status = false;
foreach($array as $key=>$v) {
if($key>0) {
if($array[$key-1]>$array[$key]) {
$array[$key] = $array[$key-1];
$array[$key-1] = $v;
$status = true;
}
}
}
if($status) {
return $this->c_sortArray($array);
} else {
return $array;
}
}
// 快速排序
public function v_sortArray($array) {
if(!is_array($array) || count($array)<=1){ return $array; }
if(count($array)>2) {
$m = $array[floor(count($array)/2)+1];
} else {
if($array[0]>$array[1]) {
$temp = $array[0];
$array[0] = $array[1];
$array[1] = $temp;
}
return $array;
}
$leftarray = array();
$rightarray = array();
foreach($array as $key=>$v) {
if($v>$m) {
$rightarray[] = $v;
}
if($v<$m) {
$leftarray[] = $v;
}
if($v==$m) {
$mid[] = $v;
}
}
$nleftarray = $this->v_sortArray($leftarray);
$nrightarray = $this->v_sortArray($rightarray);
return array_merge($nleftarray,$mid,$nrightarray);
}
// 直接插入排序
public function i_sortArray($array) {
if(!is_array($array) || count($array)<=1){ return $array; }
$newarray = array($array[0]);
$temp = 0;
foreach($array as $k=>$v) {
if($k>0) {
if($v>=$newarray[count($newarray)-1]) {
$newarray[] = $v;
} else {
foreach($newarray as $nk=>$nv) {
if($v<$nv) {
$temparray = array();
foreach($newarray as $ck=>$cv) {
if($ck<$nk) {
$temparray[$ck] = $cv;
} elseif($ck==$nk) {
$temparray[$ck] = $v;
$temparray[($ck+1)] = $cv;
} else {
$temparray[($ck+1)] = $cv;
}
}
$newarray = $temparray;
break;
}
}
}
}
}
return $newarray;
}
}
$bevin = new paixu;
$array = array(5,4,5,4,4,5,5,5,5,5);
$v = $bevin->t_sortArray($array);
print_r($v);
$v = $bevin->c_sortArray($array);
print_r($v);
$v = $bevin->v_sortArray($array);
print_r($v);
$v = $bevin->i_sortArray($array);
print_r($v);
运行结果:
Array ( [0] => 4 [1] => 4 [2] => 4 [3] => 5 [4] => 5 [5] => 5 [6] => 5 [7] => 5 [8] => 5 [9] => 5 ) Array ( [0] => 4 [1] => 4 [2] => 4 [3] => 5 [4] => 5 [5] => 5 [6] => 5 [7] => 5 [8] => 5 [9] => 5 ) Array ( [0] => 4 [1] => 4 [2] => 4 [3] => 5 [4] => 5 [5] => 5 [6] => 5 [7] => 5 [8] => 5 [9] => 5 ) Array ( [0] => 4 [1] => 4 [2] => 4 [3] => 5 [4] => 5 [5] => 5 [6] => 5 [7] => 5 [8] => 5 [9] => 5 )
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php排序算法总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php常用函数与技巧总结》、《PHP错误与异常处理方法总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
# PHP
# 排序算法
# 基本排序
# 冒泡排序
# 快速排序
# 插入排序
# PHP快速排序算法实例分析
# PHP四种排序算法实现及效率分析【冒泡排序
# 选择排序和快速排序】
# PHP排序算法之快速排序(Quick Sort)及其优化算法详解
# PHP递归实现快速排序的方法示例
# php 二维数组快速排序算法的实现代码
# PHP快速排序quicksort实例详解
# PHP快速排序算法实现的原理及代码详解
# 程序设计
# 都是
# 操作技巧
# 相关内容
# 是从
# 感兴趣
# 第二个
# 给大家
# 三种
# 找一个
# 更多关于
# 所述
# 两组
# 面向对象
# 总结了
# base_num
# left_array
# __construct
# static
# public
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
详解vue.js组件化开发实践
Laravel如何使用Vite进行前端资源打包?(配置示例)
怎么用AI帮你为初创公司进行市场定位分析?
zabbix利用python脚本发送报警邮件的方法
Laravel如何实现用户注册和登录?(Auth脚手架指南)
java中使用zxing批量生成二维码立牌
*服务器网站为何频现安全漏洞?
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
Laravel如何实现数据库事务?(DB Facade示例)
简单实现Android文件上传
Python面向对象测试方法_mock解析【教程】
如何快速搭建自助建站会员专属系统?
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
公司门户网站制作流程,华为官网怎么做?
Laravel如何创建自定义Artisan命令?(代码示例)
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
如何在万网自助建站中设置域名及备案?
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
如何在香港服务器上快速搭建免备案网站?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
Android实现代码画虚线边框背景效果
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
如何在Windows服务器上快速搭建网站?
Android中AutoCompleteTextView自动提示
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
bing浏览器学术搜索入口_bing学术文献检索地址
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
使用C语言编写圣诞表白程序
大学网站设计制作软件有哪些,如何将网站制作成自己app?
nginx修改上传文件大小限制的方法
Laravel怎么使用Intervention Image库处理图片上传和缩放
敲碗10年!Mac系列传将迎来「触控与联网」双革新
如何在IIS服务器上快速部署高效网站?
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
JS弹性运动实现方法分析
晋江文学城电脑版官网 晋江文学城网页版直接进入
高防服务器:AI智能防御DDoS攻击与数据安全保障
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
如何用好域名打造高点击率的自主建站?
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
Laravel PHP版本要求一览_Laravel各版本环境要求对照
公司网站制作价格怎么算,公司办个官网需要多少钱?

