Maison >développement back-end >tutoriel php >PHP排序问题
最后一科TCP/IP考试的结束,我的大二生活就这样被无情结束了。早上起来,看看哥们们还在酣睡,不知道自己该干点什么,遂开始流浪。看到某兄写的用冒泡排序算法给PHP中的数组进行排序,心中不免有些暗自发笑??PHP中那么多排序函数还自己写这个干吗?!后来想想,原来我错了,编程并不是死记硬背的机械运动,更是多种思维的集合;经常练习算法的目的就是扩展自己思维的目的。
遂自己也试着写了写……
<p class="sycode"> <? php $array = array ( 10 , 5 , 36 , 86 , 2 , 56 , 9 , 15 , 8 , 4 , 3 , 41 ); $num = count ( $array ); for ( $i = 0 ; $i < $num - 1 ; $i ++ ){ for ( $j = $i + 1 ; $j < $num ; $j ++ ){ if ( $array [ $j ] > $array [ $i ]){//这里交换数组的值 $temp = $array [ $i ]; $array [ $i ] = $array [ $j ]; $array [ $j ] = $temp ; } } } print_r ( $array ); ?> </p>
这是写的冒泡排序算法,结果还是可以的:
<p class="sycode"> ---------- PHP Debug ---------- Array ( [ 0 ] => 86 [ 1 ] => 56 [ 2 ] => 41 [ 3 ] => 36 [ 4 ] => 15 [ 5 ] => 10 [ 6 ] => 9 [ 7 ] => 8 [ 8 ] => 5 [ 9 ] => 4 [ 10 ] => 3 [ 11 ] => 2 )输出完成 (耗时 0 秒) - 正常终止 </p>
看着有了成功的小喜悦,就又写了一个,于是问题就出来了??
<p class="sycode"> <? php $array = array ( 10 , 5 , 36 , 86 , 2 , 56 , 9 , 15 , 8 , 4 , 3 , 41 ); $num = count ( $array ); for ( $i = 0 ; $i < $num - 1 ; $i ++ ){ for ( $j = $i + 1 ; $j < $num ; $j ++ ){ if ( $array [ $j ] > $array [ $i ]){//这里是交换键值 $temp = $i ; $i = $j ; $j = $temp ; } } } print_r ( $array ); ?> </p>
结果惨不忍睹啊……
<p class="sycode"> ---------- PHP Debug ---------- Array ( [ 0 ] => 10 [ 1 ] => 5 [ 2 ] => 36 [ 3 ] => 86 [ 4 ] => 2 [ 5 ] => 56 [ 6 ] => 9 [ 7 ] => 15 [ 8 ] => 8 [ 9 ] => 4 [ 10 ] => 3 [ 11 ] => 41 )输出完成 (耗时 0 秒) - 正常终止 </p>
一个也没换过来,Why??Why???
路过个别忘提个意见啊……