經典排序演算法 選擇排序

2022-02-01 01:27:36 字數 1006 閱讀 4317

含義:直接從待排序陣列裡選擇乙個最小(或最大)的數字,每次都拿乙個最小數字出來,順序放入新陣列,直到全部拿完。

特點:以從小到大排序為例: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...