选择排序

原理

  • 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
  • 然后,再从剩余未排序序列中继续寻找最小(大)元素,然后放到已排序序列的末尾;
  • 以此类推,直到所有元素均排序完毕

每一次从假定一个最小值的位置,然后用假定最小值和后面的值依次比较,找到实际的最小值放到假定最小值的位置上。

PHP实现

/**
* @param array $arr
* @return array
*/
function select($arr)
{
    if (!is_array($arr) || empty($arr)) {
        return $arr;
    }

    for ($i = 0, $len = count($arr); $i < $len - 1; $i++) {
        // 假定最小值的位置
        $min = $i;

        // 用假定最小值的位置和$i后面的数循环比较,找到实际最小值
        for ($j = $i + 1; $j < $len; $j++) {
            if ($arr[$min] > $arr[$j]) {
                $min = $j;
            }
        }

        // 假定最小值和实际最小值不符,交换位置
        if ($min != $i) {
            $temp      = $arr[$i];
            $arr[$i]   = $arr[$min];
            $arr[$min] = $temp;
        }
    }

    return $arr;
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!