欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

php实现排序之选择排序算法

程序员文章站 2022-04-22 09:11:00
...

选择排序

      选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,第三次从R[2]~R[n-1]中选取最小值,与R[2]交换,…,第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,…, 第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。

php实现排序之选择排序算法

//选择排序


/**
* 选择排序
* 思路: 每次选择一个相应的元素,然后将其放到制定位置
*
* @param $arr array 待排序的数组
*
* @return array 排序好的数组
*/
function select_sort($arr) {
    //实现思路
    //双重循环完成,外层控制轮数,当前的最小值。
    //内层 控制的比较次数

    //$i 当前最小值的位置, 需要参与比较的元素
    for($i=0, $len=count($arr); $i<$len-1; $i++) {
        //先假设最小的值的位置
        $p = $i;

        //$j 当前都需要和哪些元素比较,$i 后边的。
        for($j=$i+1; $j<$len; $j++) {
            //$arr[$p] 是 当前已知的最小值
            if($arr[$p] > $arr[$j]) {
                //比较,发现更小的,
                //记录下最小值的位置
                //并且在下次比较时, 应该采用已知的最小值进行比较。
                $p = $j;
            }
        }
        //已经确定了当前的最小值的位置,保存到$p中。
        //如果发现 最小值的位置与当前假设的位置$i不同,则位置互换即可
        if($p != $i) {
            $tmp = $arr[$p];
            $arr[$p] = $arr[$i];
            $arr[$i] = $tmp;
        }
    }

    //返回最终结果
    return $arr;
}


$arr = array(4, 1, 2, 6, 5, 3);

print_r(select_sort($arr));