选择最小的元素由左到右依次交换顺序即完成元素由小到大的排序。选择排序重点在于选择最小元素。如下是较为详细的描述:code
选择排序每次循环都能排好一个元素,所以须要交换的次数等于元素个数。选择排序是最容易理解的排序方式,通俗的理解方式就是:在9个碗里放了9个苹果,逐个看一眼找出最小的苹果和第一个碗里的交换一下,而后再也不看第一个碗,从第二个碗起,再玩一次,直到全部的碗都玩过。排序
function selectionSort($needSortData) { $sortDataLength = count($needSortData); //计算出待排序元素数量 for ($i = 0; $i < $sortDataLength; $i++) //外层遍历每个待排序元素 { $min = $i; //外层遍历把当前元素设置为最小值 for ($j = $i + 1; $j < $sortDataLength; $j++) {//而后从下一个元素开始依次和正在遍历的元素比较,此层遍历记为内层遍历 if ($needSortData[$j] < $needSortData[$min]) { //遍历到比这次最小值还小的元素,那么用$min记录如下当前位置 //而后继续遍历,直到遍历到最后,也就是说$min会记录最小值的位置 $min = $j; } } //如下三行是把找到的最小值和正在外层遍历的当前元素交换 $temp = $needSortData[$i]; $needSortData[$i] = $needSortData[$min]; $needSortData[$min] = $temp; } return $needSortData; } $unSortedData = [9, 1, 3, 8, 2, 6, 5, 7, 4]; $result=selectionSort($unSortedData); print_r($result);