php排序算法(冒泡排序,快速排序)

  冒泡排序实现原理

  ① 首先将所有待排序的数字放入工作列表中。

  ② 从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交换。

  ③ 重复步骤②,直至再也不能交换。

  代码实现

  

复制代码 代码如下:

  <?php

  function bubbingSort(array $array)

  {

  for($i=0, $len=count($array)-1; $i<$len; ++$i)

  {

  for($j=$len; $j>$i; --$j)

  {

  if($array[$j] < $array[$j-1])

  {

  $temp = $array[$j];

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

  $array[$j-1] = $temp;

  }

  }

  }

  return $array;

  }

  print '<pre>';

  print_r(bubbingSort(array(1,4,22,5,7,6,9)));

  print '</pre>';

  快速排序实现原理

  采用分治的思想:先保证列表的前半部分都小于后半部分,然后分别对前半部分和后半部分排序,这样整个列表就有序了。

  代码实现

  

复制代码 代码如下:

  function quickSort(array $array)

  {

  $len = count($array);

  if($len <= 1)

  {

  return $array;

  }

  $key = $array[0];

  $left = array();

  $right = array();

  for($i=1; $i<$len; ++$i)

  {

  if($array[$i] < $key)

  {

  $left[] = $array[$i];

  }

  else

  {

  $right[] = $array[$i];

  }

  }

  $left = quickSort($left);

  $right = quickSort($right);

  return array_merge($left, array($key), $right);

  }

  print '<pre>';

  print_r(quickSort(array(1,4,22,5,7,6,9)));

  print '</pre>';