1.冒泡排序算法改进:
方法一:
1 function bubbleSort($arr){ //$arr(1...n)是待排序的文件,采用自下向上扫描,对$arr做冒泡排序 2 $bFlag = true; //交换标志 3 for($i=0; $i= $i; $j--){ //对当前无序区$arr[i..n]自下向上扫描 6 if( $arr[$j+1] < $arr[$j] ){ //交换记录 7 $temp = $arr[$j+1]; //$temp不是哨兵,仅做暂存单元 8 $arr[$j+1] = $arr[$j]; 9 $arr[$j] = $temp;10 $bFlag = true; //发生了交换,故将交换标志置为真11 }12 }13 if(!$bFlag){ //本趟排序未发生交换,提前终止算法14 break;15 }16 } //endfor(外循环)17 print_r($arr);18 } //BubbleSort
方法二:
1 function bubbleSort($arr){ 2 $bSort = false; 3 for ($i=0; $i$arr[$j+1]) { 7 $bSort = false; 8 // 不使用第三个变量 9 $arr[$j] = $arr[$j] + $arr[$j+1]; 10 $arr[$j+1] = $arr[$j] - $arr[$j+1]; 11 $arr[$j] = $arr[$j] - $arr[$j+1]; 12 } 13 } 14 }15 }
2.快速排序算法:
1 function quick_sort($array) { 2 if (count( $array ) <= 1) return $array; 3 $key = $array [0]; 4 $left_arr = array (); 5 $right_arr = array (); 6 7 for($i = 1; $i < count( $array ); $i ++) { 8 if ($array [$i] <= $key) 9 $left_arr [] = $array [$i];10 else11 $right_arr [] = $array [$i];12 }13 $left_arr = quick_sort ( $left_arr );14 $right_arr = quick_sort ( $right_arr );15 return array_merge ( $left_arr, array ($key ), $right_arr );16 }