在计算机科学中,Bogo排序(bogo-sort)是個既不實用又原始的排序演算法,其原理等同將一堆卡片拋起,落在桌上後檢查卡片是否已整齊排列好,若非就再拋一次。其名字源自Quantum bogodynamics,又稱bozo sort、blort sort或猴子排序(參見無限猴子定理)。
我没在自己的机子上跑成功过,看看那位跑成功了告诉我下。
01 | set_time_limit(1); |
02 | function out_arr( $arr ) { |
03 | return implode( ', ' , $arr ).' |
04 | '; |
05 | } |
06 |
07 | function sort_bogo( $arr ) { |
08 | $ret = $arr ; |
09 | sort( $ret ); |
10 | while ( TRUE ) { |
11 | shuffle( $arr ); |
12 | if ( $arr == $ret ) { |
13 | break ; |
14 | } |
15 | echo sprintf( '%3d' , $i ++). ' : ' .out_arr( $arr ); |
16 | } |
17 | return $arr ; |
18 | } |
19 |
20 | echo '<pre>' ; |
21 | $arr = range(1, 20); |
22 | shuffle( $arr ); |
23 | echo 'ORG : ' .out_arr( $arr ); |
24 | $arr = sort_bogo( $arr ); |
25 | echo 'RET : ' .out_arr( $arr ); |
26 | echo '</pre>' ; |