This article mainly introduces the relevant information of the direct selection sorting of the PHP sorting algorithm series in detail. It has certain reference value. Interested friends can refer to it. I hope it can help everyone.
Direct selection sorting
The basic idea of direct selection sorting (Straight Select Sorting) is: for the first time, select from R[0]~R[n-1] Select the minimum value, exchange it with R[0], select the minimum value from R[1]~R[n-1] for the second time, exchange it with R[1], ...., select the minimum value from R[i-1] for the ith time ]~R[n-1], select the minimum value, exchange it with R[i-1], ....., select the minimum value from R[n-2]~R[n-1] for the n-1st time, Exchange with R[n-2], pass n-1 times in total, and obtain an ordered sequence arranged from small to large by sorting code·
The main advantage of selection sort is related to data movement. If an element is in the correct final position, it will not be moved. Each time selection sort swaps a pair of elements, at least one of them will be moved to its final position, so sorting a list of n elements requires at most n-1 swaps. Among all sorting methods that rely entirely on exchange to move elements, selection sort is a very good one.
Principle
First find the smallest (large) element in the unsorted sequence, store it at the starting position of the sorted sequence, and then select it from the remaining unsorted elements. Continue looking for the smallest (largest) element and place it at the end of the sorted sequence. And so on until all elements are sorted.
Example
Suppose the array is a[0...n-1].
1. Initially, the array is all unordered and the area is a[0..n-1]. Let i=0
2. Select the smallest element in the unordered area a[i...n-1] and exchange it with a[i]. After the exchange, a[0...i] forms an ordered area.
3.i++ and repeat the second step until i==n-1. Sorting completed.
Example
Sort the array [53,89,12,98,25,37,92,5]
First take i= 0;a[i] is the minimum value. Compare the following value with a[i]. If it is smaller than a[i], exchange the position with a[i], $i++
[5,89 ,53,98,25,37,92,12]
First take i=1;a[i] as the minimum value, compare the subsequent value with a[i], if it is smaller than a[i] is small, then exchange the position with a[i], $i++
[5,12,89,98,53,37,92,25]
Repeat the above steps
PHP code implementation
function select_sort($arr){ $length=count($arr); for ($i=0; $i <$length-1 ; $i++) { for ($j=$i+1,$min=$i; $j <$length ; $j++) { if ($arr[$min]>$arr[$j]) { $min=$j; } } $temp=$arr[$i]; $arr[$i]=$arr[$min]; $arr[$min]=$temp; } return $arr; }
Related recommendations:
Detailed explanation of merge sorting of PHP sorting algorithm
PHP sorting algorithm series bucket sorting detailed explanation_php skills
PHP common sorting algorithm learning
The above is the detailed content of Detailed explanation of direct selection sorting of PHP sorting algorithm series. For more information, please follow other related articles on the PHP Chinese website!