定义

插入排序是用来排列一连串数字的算法

原理

从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。

PHP实现

PHP沙盒环境

function insertion_sort(array $numbers=[], string $sort='asc'){
  $n = count($numbers);
  for($i =1;$i<$n;$i++){
    $index = $i-1;
    $temp = $numbers[$i];
    if($sort == 'asc'){
       while($index>=0 && $numbers[$index] > $temp){
         $numbers[$index + 1] = $numbers[$index];
         $index--;
       }
      $numbers[$index+1] = $temp;
    }elseif($sort=='desc'){
       while($index>=0 && $numbers[$index] < $temp){
         $numbers[$index + 1] = $numbers[$index];
         $index--;
       }
       $numbers[$index+1] = $temp;
    }
    
  }
  return $numbers;  
}

//例子
$numbers = [1,3,4,22,88,33,31,42];
print_r(insertion_sort($numbers));
print_r(insertion_sort($numbers,'desc'));
分类: 算法

0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注