1. 程式人生 > >『PHP學習筆記』系列五:選擇排序

『PHP學習筆記』系列五:選擇排序

演算法原理:

  • 選擇排序(Selection sort)是一種簡單直觀的排序演算法。
  • 它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。
  • 求得一個數組的最大值的下標,並將這個最大值下標的單元跟最後一個單元進行交換;
  • 然後,繼續從剩餘資料中取得最大值的下標,並將這個最大值下標的單元跟剩餘的最後一個單元交換。
  • 以此類推,直到只剩下一個數據,就不用找了。

程式碼實現:

<?php
//選擇排序演算法
//最大值與第一個元素交換的方式
function order1($numbers1) {
	$len1 = count($numbers1); //取得陣列長度
	for ($i = 0; $i < $len1 - 1; $i++) {
//外迴圈
		$max = $numbers1[$i]; //假設當前陣列元素既是最大值,當前下標即為最大值下標
		$max_index = $i;
		for ($j = $i + 1; $j < $len1; $j++) {
//內迴圈
			if ($max > $numbers1[$j]) {
				//將假定的最大值與內迴圈陣列元素進行比較,取出最大值賦值給$max,最大值下標賦值給$max_index
				$max = $numbers1[$j];
				$max_index = $j;
			}
		}
		//將最大值下標的陣列元素與假定的最大值元素進行交換,完成最大值與第一個單元的交換過程
		$numbers1[$max_index] = $numbers1[$i];
		$numbers1[$i] = $max;
	}
	return $numbers1; //注意:return放在迴圈內會終止函式
}
$arr = array(9, 8, 7, 5, 6, 4, 3, 2, 1);
echo "<h2>選擇排序</h2>";
echo "<pre>";
print_r(order1($arr));
echo "</pre><hr />";
?>

執行結果: