选择排序Selection Sort的PHP实现,安全按照算法所写。
同一排序算法下,需要趟数最多的数列是什么数列呢?思考中。
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
01 |
function out_arr( $arr )
{ |
02 |
return implode( ',
' , $arr ).' |
03 |
'; |
04 |
} |
05 |
06 |
function sort_selection( $arr )
{ |
07 |
for ( $i =
0; $i < count ( $arr )
- 1; $i ++
) { |
08 |
$min_index = $i ; |
09 |
for ( $j = $i +1; $j < count ( $arr ); $j ++
) { |
10 |
if ( $arr [ $j ]
< $arr [ $min_index ]
) { |
11 |
$min_index = $j ; |
12 |
} |
13 |
} |
14 |
if ( $min_index != $i )
{ |
15 |
$tmp = $arr [ $min_index ]; |
16 |
$arr [ $min_index ]
= $arr [ $i ]; |
17 |
$arr [ $i ]
= $tmp ; |
18 |
} |
19 |
echo sprintf( '=' , $i ). '
: ' .out_arr( $arr ); |
20 |
} |
21 |
} |
22 |
23 |
24 |
25 |
26 |
echo '<pre>' ; |
27 |
$arr =
range(20, 1); |
28 |
shuffle( $arr ); |
29 |
echo 'ORG
: ' .out_arr( $arr ); |
30 |
sort_selection( $arr ); |
31 |
echo '</pre>' ; |