本节内容:
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多维数组排序