PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】

5年以前  |  阅读数:473 次  |  编程语言:PHP 

本文实例总结了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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例