`Laravel`版`小丑路人社区`改版中,与`Hyperf版小丑路人社区`数据互动,此版本改版中……尚未彻底完结!

Q:

选择排序(Selection sort)

概念

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕

步骤

  • 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完

实例

/**
 * 选择排序
 *
 * @param  array  $arr
 * @param  int    $sort 0.从小打大;1.从大到小
 */
static function selectSort(array &$arr, int $sort = 0): void
{
    if (empty($arr)) return;
    $count = count($arr);

    for ($i = 0; $i < $count - 1; $i++)
    {
        // 最[小|大]值的下标
        $index = $i;

        for ($j = $i + 1; $j < $count; $j++)
        {
            // 设置最[小|大]值的下标
            if ($sort){
                $index = $arr[$j] < $arr[$index] ? $index : $j;
            }else{
                $index = $arr[$j] < $arr[$index] ? $j : $index;
            }
        }

        // 设置最小值与$i交换位置
        $temp = $arr[$index];
        $arr[$index] = $arr[$i];
        $arr[$i] = $temp;
    }
}
技术分享
订阅

评论记录


评论/回复