// 冒泡排序法 function bubble_sort($arr){ $count = count($arr); if($count <= 0) return false; for($i=0;$i<$count;$i++){ for($j=$count-1;$j<$i;$j--){ if($arr[$j] < $arr[$j-1]){ $tmp = $arr[$j]; $arr[$j] = $arr[$j-1]; $arr[$j-1] = $tmp; } } } return $arr; }
// 快速排序法 取数组中间值=>遍历数组剩余元素=>小于中间值的放左边,大于中间值的放右边=>将左右循环如此直至不可再分->将已排好的合并 function quick_sort($arr){ $count = count($arr); if($count <= 1) return $arr; $key = $arr[0]; $left_arr = array(); $right_arr = array(); for($i=1;$i<$count;$i++){ if($arr[$i] <= $key){ $left_arr[] = $arr[$i]; }else{ $right_arr[] = $arr[$i]; } } $left_arr = quick_sort($left_arr); $right_arr = quick_sort($right_arr); return array_merge($left_arr,$arr($key),$right_arr); }
// 顺序查找 function seq_sch($arr,$n,$k){ $arr[$n] = $k; for($i=0;$i<$n;$i++){ if($arr[$i] == $k){ break; } if($i<$n){ return $i; }else{ return -1; } } }
// 二分法查找 function bin_sch($arr,$val,$low,$high){ if($low <= $high){ $mid = intval(($low + $high)/2); if($arr[$mid] == $val){ return $mid; }elseif($val < $arr[$mid]){ return bin_sch($arr,$val,$low,$mid-1); }else{ return bin_sch($arr,$val,$mid+1,$high); } } return -1; }
// 二维数组排序 function array_sort($arr,$keys,$sort=0){ if(!is_array($arr)) return false; $keysvalue = array(); foreach($arr as $key=>$val){ $keysvalue[$key] = $val[$keys]; } if($order == 0){ asort($keysvalue); }else{ arsort($keysvalue); } reset($keysvalue); foreach($keysvalue as $key=>$vals){ $keysort[$key] = $key; } $new_array = array(); foreach($keysort as $key=>$val){ $new_array[$key] = $arr[$val]; } return $new_array; }