舉例4個數: 7,4,3,8code
總結一下就是從左到右依次選中一個數和左邊比較,這個數小於左邊就交換,交換完在和左邊比較,直到交換到比左邊大了以後,換下一個數,最後數字依次處理後,數據即從小到大排序。排序
function insertSort($needSortData) { $sortDataLength = count($needSortData); //計算出待排序元素數量 for ($i = 1; $i < $sortDataLength; $i++) //外層遍歷每個待排序元素,選第二個元素開始 { for ($j = $i ; $j >0 ; $j--) {//而後和前一個數比較,直到大於左側的數 if ($needSortData[$j] < $needSortData[$j-1]) { //找到右側數小於左側數,那麼交換 $temp = $needSortData[$j-1]; $needSortData[$j-1]=$needSortData[$j]; $needSortData[$j]=$temp; } else { //第一次發現左側數小於右側數了,說明該數已經排序完畢(由於再往左都是有序數了) //那麼 break 這次循環 break; } } } return $needSortData; } $unSortedData = [9, 1, 3, 8, 2, 6, 5, 7, 4]; $result=insertSort($unSortedData); print_r($result);