php选择排序算法

PHP / 465人浏览 / 0人评论

选择排序对冒泡排序进行了改进,每一次从等待排序的数据元素中找出最小或者最大的一个元素的位置,并且存放在系列的起始位置,直到全部待排序的元素排完。

php语言选择排序(算法)

介绍:

选择排序对冒泡排序进行了改进,每一次从等待排序的数据元素中找出最小或者最大的一个元素的位置,并且存放在系列的起始位置,直到全部待排序的元素排完。

选择排序算法实现步骤:

  • 首先假设一个最小值的位置
  • 使用假设的值与剩下的元素逐个做比较
  • 通过比较,发现更小的,记录下更小数的位置,而且下次比较的时候,采用已知的最小值最比较
  • 比较发现,最小值的位置与当前假设的最小值的位置不同,则位置互换;反之,假设成立,当前位置保留继续往下找,直到排序完成

php代码示例:

<?php
class selectSortObj {
    function selectSort($arr) {
        $count = count($arr);
        for($i = 0; $i < $count; $i++) {
            $minValKey = $i;
            for($j = $i + 1; $j < $count; $j++) {
                if($arr[$j] < $arr[$minValKey]) {
                    $minValKey = $j;
                    break;
                }
            }
            if($minValKey != $i){
                list($arr[$i],$arr[$minValKey]) = [$arr[$minValKey], $arr[$i]];
            }
            // $t = $arr[$i];
            // $arr[$i] = $arr[$minValKey];
            // $arr[$minValKey] = $t;
        }
        return $arr;
    }
}

$arr = [11, 2, 15];

$result = (new selectSortObj())->selectSort($arr);
var_dump($result);

// array(3) {
//     [0]=>
//     int(2)
//     [1]=>
//     int(11)
//     [2]=>
//     int(15)
// }

定义了一个类selectSortObj,类中搞了一个方法,处理排序。

排序方法中有两个for循环,第一个循环是外层循环,控制里层循环比较的次数。

循环对比

外层内层
0比较2次
1比较1次

转载注明:

扩展查找

0 条评论

还没有人发表评论

发表评论 取消回复

记住我的信息,方便下次评论
有人回复时邮件通知我