含義:直接從待排序陣列裡選擇乙個最小(或最大)的數字,每次都拿乙個最小數字出來,順序放入新陣列,直到全部拿完。
特點:以從小到大排序為例:n個元素,每一趟比較找出最小的那個元素,放在頭部;經過n-1趟比較,排序就出來了。
相當於每次從無序列表裡找出乙個最小數,放到左邊;然後剩下的元素繼續找出最小的,放在左邊;直到排序完成。
題目:給出無需陣列 [4,3,1,2],要求按照從小到大排序。
輸出樣例:
123
4
排序過程:
原陣列:
4,3,1,2
第1趟:
3,4,1,2
1,4,3,2
1,4,3,2
第2趟:
首元素已排好序,固定住。
1,3,4,2
1,2,4,3
第3趟:
第2個元素已排好序,固定住。
1,2,3,4
實現:
/**
* 選擇排序
* 時間o(n^2),最好o(n^2);空間o(1)
* * 1、每趟都從待排序數字裡找出最小的數字,迴圈找的過程中不交換;這趟查詢結束的時候如果發現有更小的則進行交換一次。
* 2、第一趟開始的時候所有數字都是待排序。
* 3、每趟裡的每次都先將待排序的第乙個數當做最小的。
* @param $arr
*/function selectionsort($arr)
}//比較min是否發生了變化,如果是則說明發現了更小的數,交換兩數
if ($min != $i)
}return $arr;
}
參考:經典排序演算法 - 選擇排序selection sort - kkun -
經典排序演算法 選擇排序
對比陣列中前乙個元素跟後乙個元素的大小,如果後面的元素比前面的元素小則用乙個變數k來記住他的位置,接著第二次比較,前面 後乙個元素 現變成了 前乙個元素 繼續跟他的 後乙個元素 進行比較如果後面的元素比他要小則用變數k記住它在陣列中的位置 下標 等到迴圈結束的時候,我們應該找到了最小的那個數的下標了...
經典排序演算法 選擇排序
選擇排序是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小元素,放到排序序列末尾。以此類推,直到所有的元素均排序完畢。選擇排序的交換操作介於0和 n 1 次之間 選擇排序的比較操作為n n 1 2次之間 選擇...
經典排序演算法之選擇排序
來自 演算法 中關於選擇排序的描述 首先找到陣列中最小的元素,將它和陣列的第乙個元素交換位置。其次,在剩下的元素中找到最小的元素,將它與陣列的第二個元素交換位置。如此往復,直到整個陣列排序。這就是選擇排序。話不多說,上 片段吧。public static void selectionsort int...