排序算法之 - 选择排序

本文详细介绍了选择排序的原理,通过图文并茂的方式展示了选择排序的每一轮运行过程,并附带了实现代码,帮助读者全面掌握选择排序算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

选择排序

选择排序也是重复执行一个动作的流程:从 待排序列表 中查找 最小 的元素,将它与 待排序列表第一个元素进行 交换,交换之后第一个元素进入 已排序列表除去 第一个元素之后的其他元素组成 下一轮的待排序列表,其初始状态如图:
在这里插入图片描述

  • 第一轮运行流程及结果:
    在这里插入图片描述
  • 第二轮运行流程及结果:
    在这里插入图片描述
  • 第三轮运行流程及结果:
    在这里插入图片描述
  • 第四轮运行流程及结果:
    在这里插入图片描述
  • 第五轮运行流程及结果:
    在这里插入图片描述
  • 第六轮运行流程及结果:
    在这里插入图片描述
  • 第七轮运行流程及结果:
    在这里插入图片描述
  • 第八轮运行流程及结果:
    在这里插入图片描述

PHP实现代码:

<?php

function selection($arrayNeedsSort)
{
    $length = count($arrayNeedsSort);
    for ($i = 0; $i < $length - 1; $i++) {
        $compare = $arrayNeedsSort[$i];
        $pos = $i;
        for ($j = $i + 1; $j < $length; $j++) {
            if ($compare > $arrayNeedsSort[$j]) {
                $compare = $arrayNeedsSort[$j];
                $pos = $j;
            }
        }
        $tmp = $arrayNeedsSort[$pos];
        $arrayNeedsSort[$pos] = $arrayNeedsSort[$i];
        $arrayNeedsSort[$i] = $tmp;
    }

    return $arrayNeedsSort;
}

$array = [5, 9, 3, 1, 2, 8, 4, 7, 6];
$res = selection($array);
echo '<pre>';
print_r($res);

运行结果:
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值