选择排序
<ul>
<li>通过假设一个最小数的key,来逐个比较后面的值,如果假设的值大于后面的值,则互换位置。</li>
</ul>
<h2>实现</h2>
<pre><code class="language-php">function select(array $arr)
{
$count = count($arr);
if (empty($arr) || $count == 1) {
return $arr;
}
// 大循环,控制轮数
for ($out = 0; $out < $count; $out++) {
// 假设的最小值的key
$min = $out;
// 小循环,逐个比较后面的值
for ($in = $out + 1; $in < $count; $in++) {
if ($arr[$min] > $arr[$in]) {
$min = $in; // 交换key
}
}
// 不相同,则互换位置
if ($min != $out) {
$tem = $arr[$out];
$arr[$out] = $arr[$min];
$arr[$min] = $tem;
}
}
return $arr;
}</code></pre>
<h2>测试</h2>
<pre><code class="language-php">$arr = [23, 15, 43, 25, 54, 2, 6, 82, 11, 5, 21, 32, 65];
$select = select($arr);
var_export($select);</code></pre>
<h2>结果</h2>
<pre><code class="language-php">array (
0 => 2,
1 => 5,
2 => 6,
3 => 11,
4 => 15,
5 => 21,
6 => 23,
7 => 25,
8 => 32,
9 => 43,
10 => 54,
11 => 65,
12 => 82,
)</code></pre>