php实用快速排序算法的实例代码

发布时间:2020-08-13编辑:脚本学堂
本文介绍几个php编程中常用的快速排序算法,分享几个实例代码,学习下php插入排序、快速排序的实现方法,有需要的朋友参考下。

本节内容:
php快速排序、插入排序的实现代码。

例1,php实现插入排序。
 

复制代码 代码示例:
<?php
/**
 * PHP插入排序的类
 * @site www.jb200.com
 */
class insert_sort {
  public $arr;
  public $size;
 
  function __construct($arr) {
    $this->arr = $arr;
    $this->size = count ( $arr );
  }
 
  //引用传递,实现数据值的交换
  function swap(&$a, &$b) {
    list ( $a, $b ) = array ($b, $a );
  }
 
  //插入排序主逻辑函数
  function insert_sort_process() {
    for($j = 1; $j < $this->size; $j ++) {
      $key = $this->arr [$j];
      $i = $j - 1;
      while ( $i >= 0 && $this->arr [$i] > $key ) {
        $this->swap ( $this->arr [$i], $this->arr [$i + 1] );
        $i --;
      }
      //$i+1是因为退出while循环时进行了减一操作
      $this->arr [$i + 1] = $key;
    }
    return $this->arr;
  }
}

例2,php实现快速排序。
 

复制代码 代码示例:
<?php
/**
 * php实现快速排序类
 * @site www.jb200.com       
 */
class quick_sort {
  public $arr;
  public $size;
 
  function __construct($array) {
    $this->arr = $array;
    $this->size = count ( $array );
  }
 
  function quick_swap(&$a, &$b) {
    list ( $a, $b ) = array ($b, $a );
  }
 
  //获取分段数据位置
  function quick_partiton($left, $right) {
    $key = $this->arr [$left];
    $i = $left + 1;
    $j = $right;
    while ( $i <= $j ) {
      while ( $i <= $j && $this->arr [$i] <= $key ) {
        $i ++;
      }
      while ( $i <= $j && $this->arr [$j] > $key ) {
        $j --;
      }
      if ($i < $j) {
        $this->quick_swap ( $this->arr [$i], $this->arr [$j] );
      }
    }
    $this->quick_swap ( $this->arr [$left], $this->arr [$j] );
    return $j;
  }
 
  //快速排序主逻辑函数
  function quick_sort_process($left = null, $right = null) {
    $left = (is_null ( $left )) ? 0 : $left;
    $right = (is_null ( $right )) ? $this->size - 1 : $right;
    if ($left < $right) {
      $middle = $this->quick_partiton ( $left, $right );
      $this->quick_sort_process ( $left, $middle - 1 );
      $this->quick_sort_process ( $middle + 1, $right );
    }
  }
}

代码说明:
调用$this->arr即为排序好的数组。

>>> 您可能感兴趣的文章:
php根据键值对二维数组排序的小例子
php二维数组排序(实例)
php数组排序的几个函数(附实例)
PHP数组排序方法总结(收藏)
PHP各种排序算法的实现汇总
php冒泡排序的小例子
php 二维数组排序的两个例子
php 数组排序的实例代码
php 实现冒泡排序的简单例子
PHP二维数组排序自定义函数
php 选择排序的实现代码
php 冒泡排序的实现代码
php插入排序的实现代码
php 数组排序方法分享(冒泡排序、选择排序)
php冒泡排序算法一例
php冒泡排序与快速排序的例子
php二维数组排序的两种方法
php多维数组排序