1 <?php 2 function bubble_sort($arr){ 3 $len = count($arr); 4 for($i=0;$i<$len-1;$i++){ 5 $flag = false; 6 for($j=0;$j<$len-1-$i;$j++){ 7 if($arr[$j] > $arr[$j+1]){ 8 $temp = $arr[$j]; 9 $arr[$j] = $arr[$j+1]; 10 $arr[$j+1] = $temp; 11 $flag = true; 12 } 13 } 14 if(!$flag){ 15 return $arr; 16 } 17 } 18 return $arr; 19 } 20 $arr= array(1,4,2,98,43,24,5,7); 21 print_r(bubble_sort($arr)); 22 23 24 ?>
1 function quik_sort($arr) { 2 if (count($arr) < 2) { 3 return (array)$arr; 4 } 5 6 $base = $arr[0]; 7 $leftArr = array(); 8 $rightArr = array(); 9 for ($i=1, $len=count($arr); $i < $len; $i++) { 10 if ($arr[$i] < $base) { 11 $leftArr[] = $arr[$i]; 12 } else { 13 $rightArr[] = $arr[$i]; 14 } 15 } 16 17 $leftArr = quik_sort($leftArr); 18 $rightArr = quik_sort($rightArr); 19 20 return array_merge($leftArr, array($base), $rightArr); 21 }
function select_sort($arr) { $temp=0; for($i=0;$i<count($arr)-1;$i++) { $minval=$arr[$i]; //每一次認爲第i個數是最小值 $minindex=$i; for($j=$i+1;$j<count($arr);$j++) { //說明目前的值並非最小值 if($minval>$arr[$j]) { $minval=$arr[$j]; $minindex=$j; } } //內層for循環結束後再進行交換 這正是選擇排序比冒泡排序優越的地方 $temp=$arr[$i]; $arr[$i]=$arr[$minindex]; $arr[$minindex]=$temp; } }