Home  >  Article  >  Backend Development  >  Detailed explanation of direct selection sorting of PHP sorting algorithm series

Detailed explanation of direct selection sorting of PHP sorting algorithm series

小云云
小云云Original
2018-01-08 09:56:141605browse

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn