PHP 算法01之選擇排序

描述

選擇最小的元素由左到右依次交換順序即完成元素由小到大的排序。選擇排序重點在於選擇最小元素。如下是較爲詳細的描述:code

  1. 首先,把全部的數據循環一遍找到最小的數,而後和第一個數交換位置。
  2. 而後從第二個數起,一直循環到最後一個,找到最小的數和第二個交換。
  3. 如此一直找到最後一個。

選擇排序每次循環都能排好一個元素,所以須要交換的次數等於元素個數。選擇排序是最容易理解的排序方式,通俗的理解方式就是:在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);
相關文章
相關標籤/搜索