選擇最小的元素由左到右依次交換順序即完成元素由小到大的排序。選擇排序重點在於選擇最小元素。如下是較爲詳細的描述: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);