A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董事长 中级黑马   /  2016-11-14 16:35  /  2519 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

<?php
//选择排序法思路: 每次选择一个相应的元素,然后将其放到指定的位置
$arr = array(1,43,54,62,21,66,32,78,36,76,39);
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;
}
$select = select_sort($arr);
echo "<pre>";
var_dump($select);

1 个回复

倒序浏览
选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。
简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马