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各版本环境要求对照  公司网站制作价格怎么算,公司办个官网需要多少钱?