定义

选择排序是用来排列一连串数字的算法

原理

  1. 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置
  2. 再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾
  3. 重复第二步,直到全部待排序的数据元素的个数为零

PHP实现

PHP沙盒环境

拷贝代码到沙盒环境可以看到效果

//选择排序升序
function selection_sort(array $numbers=[], string $order = 'asc'){
   //获取数组元素个素总数 $n
   $n = count($numbers);
   for($i = 0; $i< $n-1; $i++){
     $index = $i;    
     for($j=$i+1;$j<$n;$j++){
  
        if($order == 'asc'){
           if($numbers[$j] < $numbers[$index]){
             //获取最小元素坐标
             $index = $j;
           }
        }elseif($order='desc'){
           if($numbers[$j] > $numbers[$index]){
             //获取最大元素坐标
             $index = $j;
           }
        }
       
     }
     //将i元素和最小元素或者最大元素交换
     if($i != $index){
       $temp = $numbers[$i];
       $numbers[$i] = $numbers[$index];
       $numbers[$index] = $temp;
     }

  }
  return $numbers;

}

//例子
$numbers = [1,3,4,22,88,33,31,42];
print_r(selection_sort($numbers));
print_r(selection_sort($numbers,'desc'));

分类: 算法

0 条评论

发表评论

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