PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序
- 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<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;
- }
- }
- // 冒泡排序
- publicfunctionc_sortArray($array) {
- if(!is_array($array) ||count($array)<=1){return$array; }
- $status= false;
- <a href="/tags.php/foreach/" target="_blank">foreach</a>($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
- )