選擇排序
選擇排序是表現最穩定的排序演算法之一,當用到它的時候,資料規模越小越好。理論上講,選擇排序可能也是平時排序一般人想到最多的方法。
選擇排序是一種簡單直覺的排序演算法。它的工作原理是:
遍歷一個數組,在此過程中,找出數組中的最大值及其位置。然後將該最大值的單元,跟數組的最後一個單元“交換位置”,這樣進行一趟,數組中的最大值就一定放在最後位置了。
將上述過程中剩餘的資料繼續遍歷一次,並做同樣的事情,則此時剩餘部分的最大值也能夠放在剩餘部分的最後位置-對整體而言就是倒數第二的位置。
依此類推。 。 。 。 。 。
圖示:
#原始陣列 |
# 18 | 22 |
12 | 15 | 23 |
9 |
#第一趟 | 18 |
22 | #12 | 15 | ##923 | |
18 | #9 | 12 | 15 | 22 | 23 | |
#15 | 9 | 12 | 18 | 22 | 23 | |
12 | 9 | 15 | 18 | 22 | 23 | |
9 | 12 | 15 | 18 | 22 | #23 |
程式碼如下:
<?php $arr1 = array(18,22,12,15,23,9); $n = count($arr1); for ($i=0; $i < $n-1; $i++) { //找最大值 $max = $arr1[0]; $max_key = 0; for ($k=0; $k < $n - $i; $k++) { if ($arr1[$k] > $max) { $max = $arr1[$k]; $max_key = $k; } } //交换 $temp = $arr1[$max_key]; $arr1[$max_key] = $arr1[$n-1-$i]; $arr1[$n-1-$i] = $temp; }
總結法則:
1.要進行從頭到尾找出其中的最大值(及下標),並進行交換的趟數為$n-1,$n為數組長度#2.每一趟要做的事情是:a)找最大值,吧)並將該最大值跟這一趟的最後一項進行交換;3.每一趟要從中找最大值的資料個數都比前一趟少1,其中第一趟有$n個。
#
以上是選擇排序演算法詳細解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!