最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
时间:2022-06-24 14:57:15 编辑:袖梨 来源:一聚教程网
代码如下 | 复制代码 |
classbevin{ public$public='public' private$private='private' protected$protected='protected' //final $final = 'final' static$static='static' function__construct(){ $this->protected='change private' } publicfunctionsetValue($a){ self::$static=$a; } publicfunctiongetValue(){ echo$this->private; } function__destruct(){ echo'asdfsadf' } } classpaixu { // 基本排序 publicfunctiont_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[$i] =$array[$j]; $array[$j] =$temp; } } } return$array; }else{ return$array; } } // 冒泡排序 publicfunctionc_sortArray($array) { if(!is_array($array) ||count($array)<=1){return$array; } $status= false; foreach($arrayas$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; } } // 快速排序 publicfunctionv_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($arrayas$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); returnarray_merge($nleftarray,$mid,$nrightarray); } // 直接插入排序 publicfunctioni_sortArray($array) { if(!is_array($array) ||count($array)<=1){return$array; } $newarray=array($array[0]); $temp= 0; foreach($arrayas$k=>$v) { if($k>0) { if($v>=$newarray[count($newarray)-1]) { $newarray[] =$v; }else{ foreach($newarrayas$nk=>$nv) { if($v<$nv) { $temparray=array(); foreach($newarrayas$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=newpaixu; $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 ) |