0%

选择排序

时间复杂度为O(n^2)的排序算法就三种,冒泡、插入和选择,今天来聊聊选择排序!

一、概念

  1. 选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间。但是选择排序每次会从未排序区间中找到最小的元素,将其放到已排序区间的末
    尾(升序时)。

二、实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function selectionSort($data)
{
$len = count($data);
if ($len <= 1) {
return $data;
}
for ($i = 0; $i < $len - 1; $i++) {
$p = $i;//假设$i是最小的值的位置
for ($j = $i + 1; $j < $len; $j++) {
if ($data[$p] > $data[$j]) {
$p = $j;
}
}
$tmp = $data[$p];
$data[$p] = $data[$i];
$data[$i] = $tmp;
}

return $data;
}