冒泡排序Bubble Sort的PHP实现。代码中函数说明:
- out_arr,用于将数组输出成一个字符串,以便查看
- bubblesort,第一种实现方案,从后往前依次选出需要的值,这里是较大的
- bubblesort2,第二种方案,从前往后一次选中需要的值,这里是最小的
- range,产生一个1到20的数组
- shuffle,打乱数组
01 | function out_arr( $arr ) { |
02 | return implode( ', ' , $arr ).' |
03 | '; |
04 | } |
05 |
06 | function bubblesort( $arr ) { |
07 | for ( $i = 0; $i < count ( $arr ) - 1; $i ++ ) { |
08 | for ( $j = 0; $j < count ( $arr ) - $i - 1; $j ++ ) { |
09 | if ( $arr [ $j ] > $arr [ $j +1] ) { |
10 | $tmp = $arr [ $j ]; |
11 | $arr [ $j ] = $arr [ $j + 1]; |
12 | $arr [ $j + 1] = $tmp ; |
13 | } |
14 | } |
15 | echo sprintf( '%3d' , $i ). ' : ' .out_arr( $arr ); |
16 | } |
17 | } |
18 |
19 |
20 | function bubblesort2( $array ) { |
21 | $count = count ( $array ); |
22 | for ( $i =0; $i < $count ; $i ++) { |
23 | for ( $j = $count -1; $j > $i ; $j --) { |
24 | if ( $array [ $j ] < $array [ $j -1]) { |
25 | $tmp = $array [ $j ]; |
26 | $array [ $j ] = $array [ $j -1]; |
27 | $array [ $j -1] = $tmp ; |
28 | } |
29 | } |
30 | echo sprintf( '%3d' , $i ). ' : ' .out_arr( $array ); |
31 | } |
32 | return $array ; |
33 | } |
34 | echo '<pre>' ; |
35 | $arr = range(1, 20); |
36 | shuffle( $arr ); |
37 | echo 'ORG : ' .out_arr( $arr ); |
38 | bubblesort2( $arr ); |
39 | echo '</pre>' ; |