This article analyzes the method of implementing array sorting using PHP selection sorting method. Share it with everyone for your reference. The specific analysis is as follows:
The basic idea of the selection sorting method: Let’s use a case to illustrate it. For example, there is an array $arr = array(2,6,3,9), sorted from large to small.
The first big loop: it first assumes that $arr[0] is the maximum value, and then compares it with $arr[1]~$arr[3] respectively. If it is larger, it will be exchanged. The process is as follows (2,6,3,9)---The ratio of 2 and 6--->(6,2,3,9)---The ratio of 6 and 3--->(6,2,3,9 )---6 and 9 ratio--->(9,2,3,6). Note that the subscripts here also need to change.
The second big loop: assuming $arr[1] is the largest ($arr[0] is excluded), compare it with $arr[2]~$arr[3] respectively. The process is as follows (9,2,3 ,6)----2 and 3 ratio---->(9,3,2,6)---3 and 6 ratio--->(9,6,2,3).
The third big loop: Assume $arr[2] is the largest, compare it with $arr[3], the process is like this (9,6,2,3)---2 and 3 ratio--->( 9,6,3,2)
Similarly, after N-1 large cycles, it can be arranged
The PHP code is as follows, which is also encapsulated with functions
<?php function selectSort(&$arr){ for($i=0;$i<count($arr);$i++){ $max = $arr[$i]; for($j=$i+1;$j<count($arr);$j++){ if($max<$arr[$j]){ $max = $arr[$j]; $arr[$j] = $arr[$i]; $arr[$i] = $max; } } } return $arr; } $myarr = array(2,6,3,9); selectSort($myarr); echo "<pre class="brush:php;toolbar:false">"; print_r($myarr); ?>
Code analysis:
The first big cycle:
$i=0 array(2,6,3,9)
$j=1, execute the ratio of 2 and 6: it becomes $arr[0]=6, $arr[1]=2, $max=6, that is, (6,2,3,9)
$j=2, execute 3 and 6 ratio: do not execute
$j=3, execute the ratio of 9 and 6: it becomes $arr[0]=9, $arr[3]=6, $max=9, that is, (9,2,3,6)
Second cycle:
$i=1,$max=$arr[1]=2, array (9,2,3,6)
$j=2, execute the ratio of 3 and 2: it becomes $arr[1]=3, $arr[2]=2, $max=3, that is, (9,3,2,6)
$j=3, execute the ratio of 6 and 3: it becomes $arr[1]=6, $arr[3]=3, $max=6, that is, (9,6,2,3)
The third cycle:
$i=2,$max=$arr[2]=2, array (9,6,2,3)
$j=3, execute the ratio of 3 and 2: it becomes $max[2]=3, $arr[3]=2, $max=3, that is, (9,6,3,2)
I hope this article will be helpful to everyone’s PHP programming design.