PHP 各种排序算法实现代码

复制代码 代码如下:

  <?php

  // 功能: PHP实现各种排序算法

  // Author: windlike

  // Datetime: 2007-06-09

  // 冒泡排序

  function BubbleSort($arr){

  $num = count($arr);

  for($i=1;$i<$num;$i++){

  for($j=$num-1;$j>=$i;$j--){

  if($arr[$j]<$arr[$j-1]){

  $iTemp = $arr[$j-1];

  $arr[$j-1] = $arr[$j];

  $arr[$j] = $iTemp;

  }

  }

  }

  return $arr;

  }

  // 交换法排序

  function ExchangeSort($arr){

  $num = count($arr);

  for($i=0;$i<$num-1;$i++){

  for($j=$i+1;$j<$num;$j++){

  if($arr[$j]<$arr[$i]){

  $iTemp = $arr[$i];

  $arr[$i] = $arr[$j];

  $arr[$j] = $iTemp;

  }

  }

  }

  return $arr;

  }

  // 选择法排序

  function SelectSort($arr){

  $num = count($arr);

  for($i=0;$i<$num-1;$i++){

  $iTemp = $arr[$i];

  $iPos = $i;

  for($j=$i+1;$j<$num;$j++){

  if($arr[$j]<$iTemp){

  $iTemp = $arr[$j];

  $iPos = $j;

  }

  }

  $arr[$iPos] = $arr[$i];

  $arr[$i] = $iTemp;

  }

  return $arr;

  }

  // 插入法排序

  function InsertSort($arr){

  $num = count($arr);

  for($i=1;$i<$num;$i++){

  $iTemp = $arr[$i];

  $iPos = $i-1;

  while(($iPos>=0) && ($iTemp<$arr[$iPos])){

  $arr[$iPos+1] = $arr[$iPos];

  $iPos--;

  }

  $arr[$iPos+1] = $iTemp;

  }

  return $arr;

  }

  // 快速排序

  function QuickSort($arr){

  $num = count($arr);

  $l=$r=0;

  for($i=1;$i<$num;$i++){

  if($arr[$i] < $arr[0]){

  $left[] = $arr[$i];

  $l++;

  }else{

  $right[] = $arr[$i];

  $r++;

  }

  }

  if($l > 1){

  $left = QuickSort($left);

  }

  $new_arr = $left;

  $new_arr[] = $arr[0];

  if($r > 1){

  $right = QuickSort($right);

  }

  for($i=0;$i<$r;$i++){

  $new_arr[] = $right[$i];

  }

  return $new_arr;

  }

  $arr = array(7,1,6,5,2);

  $arr_new = QuickSort($arr);

  echo "<pre>";

  print_r($arr_new);

  echo "</pre>";

  ?>