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

for($j=($i+1); $j

$temp = $array[$i];

if($array[$j]

$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

$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

$temparray = array();

foreach($newarray as $ck=>$cv) {

if($ck

$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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值