当前位置:首页 > PHP教程 > php应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2018-07-31 11:26:07 浏览: 评论:0 
  1. classbevin{ 
  2. public$public='public' 
  3. private$private='private' 
  4. protected$protected='protected' 
  5. //final $final = 'final' 
  6. static$static='static' 
  7. function__construct(){ 
  8.  $this->protected='change private' 
  9. publicfunctionsetValue($a){ 
  10.  self::$static=$a
  11. publicfunctiongetValue(){ 
  12.  echo$this->private
  13. function__destruct(){ 
  14.  echo'asdfsadf' 
  15. classpaixu { 
  16. // 基本排序 
  17. publicfunctiont_sortArray($array) { 
  18.  if(is_array($array) &&count($array)>1) { 
  19.  for($i=0;$i<count($array);$i++) { 
  20.   for($j=($i+1);$j<count($array);$j++) { 
  21.   $temp=$array[$i]; 
  22.   if($array[$j]<$array[$i]) { 
  23.   $array[$i] =$array[$j]; 
  24.   $array[$j] =$temp
  25.   } 
  26.   } 
  27.  } 
  28.  return$array
  29.  }else
  30.  return$array
  31.  } 
  32. // 冒泡排序 
  33. publicfunctionc_sortArray($array) { 
  34.  if(!is_array($array) ||count($array)<=1){return$array; } 
  35.  $status= false; 
  36.  <a href="/tags.php/foreach/" target="_blank">foreach</a>($arrayas$key=>$v) { 
  37.  if($key>0) { 
  38.   if($array[$key-1]>$array[$key]) { 
  39.   $array[$key] =$array[$key-1]; 
  40.   $array[$key-1] =$v
  41.   $status= true; 
  42.   } 
  43.  } 
  44.  } 
  45.  if($status) { 
  46.  return$this->c_sortArray($array); 
  47.  }else
  48.  return$array
  49.  } 
  50. // 快速排序 
  51. publicfunctionv_sortArray($array) { 
  52.  if(!is_array($array) ||count($array)<=1){return$array; } 
  53.  if(count($array)>2) { 
  54.  $m=$array[floor(count($array)/2)+1]; 
  55.  }else
  56.  if($array[0]>$array[1]) { 
  57.   $temp=$array[0]; 
  58.   $array[0] =$array[1]; 
  59.   $array[1] =$temp
  60.  } 
  61.  return$array
  62.  } 
  63.  $leftarray=array(); 
  64.  $rightarray=array(); 
  65.  foreach($arrayas$key=>$v) { 
  66.  if($v>$m) { 
  67.   $rightarray[] =$v
  68.  } 
  69.  if($v<$m) { 
  70.   $leftarray[] =$v
  71.  } 
  72.  if($v==$m) { 
  73.   $mid[] =$v
  74.  } 
  75.  } 
  76.  $nleftarray=$this->v_sortArray($leftarray); 
  77.  $nrightarray=$this->v_sortArray($rightarray); 
  78.  returnarray_merge($nleftarray,$mid,$nrightarray); 
  79. // 直接插入排序 
  80. publicfunctioni_sortArray($array) { 
  81.  if(!is_array($array) ||count($array)<=1){return$array; } 
  82.  $newarray=array($array[0]); 
  83.  $temp= 0; 
  84.  foreach($arrayas$k=>$v) { 
  85.  if($k>0) { 
  86.   if($v>=$newarray[count($newarray)-1]) { 
  87.   $newarray[] =$v
  88.   }else
  89.   foreach($newarrayas$nk=>$nv) { 
  90.   if($v<$nv) { 
  91.   $temparray=array(); 
  92.   foreach($newarrayas$ck=>$cv) { 
  93.    if($ck<$nk) { 
  94.    $temparray[$ck] =$cv
  95.    }elseif($ck==$nk) { 
  96.    $temparray[$ck] =$v
  97.    $temparray[($ck+1)] =$cv
  98.    }else
  99.    $temparray[($ck+1)] =$cv
  100.    } 
  101.   } 
  102.   $newarray=$temparray
  103.   break
  104.   } 
  105.   } 
  106.   } 
  107.  } 
  108.  } 
  109.  return$newarray
  110. $bevin=newpaixu; 
  111. $array=array(5,4,5,4,4,5,5,5,5,5); 
  112. $v=$bevin->t_sortArray($array); 
  113. print_r($v); 
  114. $v=$bevin->c_sortArray($array); 
  115. print_r($v); 
  116. $v=$bevin->v_sortArray($array); 
  117. print_r($v); 
  118. $v=$bevin->i_sortArray($array); 
  119. print_r($v); 

运行结果:

  1. Array 
  2.   [0] => 4 
  3.   [1] => 4 
  4.   [2] => 4 
  5.   [3] => 5 
  6.   [4] => 5 
  7.   [5] => 5 
  8.   [6] => 5 
  9.   [7] => 5 
  10.   [8] => 5 
  11.   [9] => 5 
  12. Array 
  13.   [0] => 4 
  14.   [1] => 4 
  15.   [2] => 4 
  16.   [3] => 5 
  17.   [4] => 5 
  18.   [5] => 5 
  19.   [6] => 5 
  20.   [7] => 5 
  21.   [8] => 5 
  22.   [9] => 5 
  23. Array 
  24.   [0] => 4 
  25.   [1] => 4 
  26.   [2] => 4 
  27.   [3] => 5 
  28.   [4] => 5 
  29.   [5] => 5 
  30.   [6] => 5 
  31.   [7] => 5 
  32.   [8] => 5 
  33.   [9] => 5 
  34. Array 
  35.   [0] => 4 
  36.   [1] => 4 
  37.   [2] => 4 
  38.   [3] => 5 
  39.   [4] => 5 
  40.   [5] => 5 
  41.   [6] => 5 
  42.   [7] => 5 
  43.   [8] => 5 
  44.   [9] => 5 

Tags: 小结 算法 实例

分享到: