Sortierung auswählenSortierung auswählen
● Auswahlsortierung ist auch interne Sortierung
● Sortieridee:
Wählen Sie zunächst eine Zahl zufällig aus Wählen Sie ein zu sortierendes Element im Array aus und vergleichen Sie es mit anderen Elementen des Arrays. Vergleichen und tauschen Sie dann die Positionen aus, um den minimalen oder maximalen Wert zu erhalten. Wählen Sie dann eine Zahl im verbleibenden Array aus, um sie mit den verbleibenden Elementen des Arrays zu vergleichen, und erhalten Sie schließlich das zweite minimale oder maximale Element. Und so weiter
● Schematische Darstellung:
Die Auswahlsortierung hat eine Gesamtarraygröße – 1 Sortierrunde ist ein weiterer Zyklus Vergleichen Sie es dann mit den folgenden Elementen der Reihe nach. Wenn festgestellt wird, dass es eine kleinere Zahl als die aktuelle Zahl gibt, wird die Mindestzahl neu bestimmt und der Index am Ende des Arrays ermittelt wird durchlaufen, die Mindestanzahl und der Index dieser Runde werden erhalten und der Austausch
1 Angenommen, es gibt ein zu sortierendes Array [3, 1, 15, 5, 20]
2. Wählen Sie zufällig ein Element aus, vorausgesetzt, das erste ist das kleinste Element. Vergleichen Sie 3 mit den verbleibenden Elementen des Arrays. Nach der ersten Sortierrunde ist das kleinste Element 1
<?php $arr = [3, 1, 15, 5, 20]; $count = count($arr); //假设最小的元素就是第一个元素 $minIndex = 0; $min = $arr[0]; for ($j = $minIndex + 1; $j < $count; $j++) { if ($min > $arr[$j]) { //假定的最小值大于后面的值,重置最小值 $min = $arr[$j]; $minIndex = $j; } } $arr[$minIndex] = $arr[0]; $arr[0] = $min;
3 Wählen Sie erneut einen hypothetischen Mindestwert aus und vergleichen Sie ihn mit den folgenden Elementen, um den zweiten Mindestwert zu erhalten folgt:
<?php $arr = [1, 3, 15, 5, 20]; $count = count($arr); //假设最小的元素就是第二个元素 $minIndex = 1;//假设的最小元素的下表 $min = $arr[1];//假定最小元素的值 for ($j = $minIndex + 1; $j < $count; $j++) { if ($min > $arr[$j]) { //假定的最小值大于后面的值,重置最小值 $min = $arr[$j]; $minIndex = $j; } } if ($minIndex != 1) { $arr[$minIndex] = $arr[1];//假定的最小元素不是最小元素,那么把后面的最小元素和假定的最小元素做交换 $arr[1] = $min;//元素下标交换 }
public static function sortSelect(array $arr) :array { if (!is_array($arr)) { return ['message' => '$arr不是一个数组']; } $count = count($arr); if ($count <= 1) { return $arr; } for ($i = 0; $i < $count; $i++) { $minIndex = $i; $min = $arr[$i]; for ($j = $i + 1; $j < $count; $j++) { if ($min > $arr[$j]) {//选择的假定最小元素大于后面的元素 $min = $arr[$j];//把后面的最小元素赋值给假定的最小元素 $minIndex = $j;//把后面最小元素的坐标赋值给假定的最小元素 } } if ($minIndex != $i) {//如果在这个位置,一开始的假定最小元素的坐标被替换了,说明假定最小元素不是最小元素,那么发生交换 $arr[$minIndex] = $arr[$i];//交换最小元素,把最小元素和假定元素做交换 $arr[$i] = $min; } } return $arr; }
Das obige ist der detaillierte Inhalt vonAuswahlsortierung des PHP-Sortieralgorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!