PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】

作者:袖梨 2022-06-24
 代码如下复制代码

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

)

相关文章

精彩推荐