排序算法(上)

冒泡排序:操作相邻的两个元素进行比较
0
$arr = [15,23,6,3,8,3,32,88,23,4];
 
function mysort($arr)
{
  $p=0;
  $len =count($arr)-1;
  if($len<=1)return false;
  for($k=0;$k<$len;$k++)
  {
    ++$p;
    $static = false;
    for($i=0;$i <$len; $i++)
    {
      if($arr[$i] > $arr[$i+1]){
        $m = $arr[$i];
        $arr[$i] = $arr[$i+1];
        $arr[$i+1] = $m;
        $static = true;       
      }
    }
      if(!$static)break;
  }
  echo $p;
  return $arr;
}
 
$arr = mysort($arr);
var_dump($arr);
 
 
 
插入排序:分开为两个区间,已分区间和未分区间
0
/**
* 插入排序
* $len 统计数组长度
*
*分区间,第一个元素作为已分区间,从第二个元素开始进行比较,并且移动数据(比较顺序是从后往前比较移动)
*/
$arr = [15,23,6,3,8,3,32,88,23,4];
function myks($arr){
  for($i = 0; $i < count($arr); $i++){
    $val = $arr[$i];
    $j = $i -1;
    while($j >= 0 && $arr[$j] > $val){
      $arr[$j+1] = $arr[$j];
      $j--;
    }
    $arr[$j+1] = $val;
 
  }
  return $arr;
}
$m= myks($arr);
var_dump($m);
 
选择排序:也是和插入排序一样分为已排区间和未排区间,但是选择排序会从未排区间中找到最小的元素来排序
0
 
原文地址:https://www.cnblogs.com/LF-place/p/11537593.html