Blogger Information
Blog 26
fans 0
comment 3
visits 20574
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php实现排序之选择排序算法
无意苦争春的博客
Original
693 people have browsed it

选择排序

      选择排序(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次,得到一个按排序码从小到大排列的有序序列。

151018adsz1xnzhq7x5h5z.png.thumb.jpg

//选择排序


/**
* 选择排序
* 思路: 每次选择一个相应的元素,然后将其放到制定位置
*
* @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));


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post