冒泡排序
$arr=array(1,43,54,62,21,66,32,78,36,76,39);
function getPao($arr){
$len = count($arr);
for($i = 0; $i < $len ; $i++){
for($k = 0; $k < $len -1 ;$k++){
if($arr[$k+1] > $arr[$k]){
$tmp = $arr[$k+1];
$arr[$k+1] = $arr[$k];
$arr[$k] = $tmp;
}
}
}
return $arr;
}
function swap(array &$arr,$a,$b){
$temp = $arr[$a];
$arr[$a] = $arr[$b];
$arr[$b] = $temp;
}
/冒泡排序的优化(如果某一次循环的时候没有发生元素的交换,则整个数组已经是有序的了)
function BubbleSort1(array &$arr){
$length = count($arr);
$flag = TRUE;
for($i = 0;($i < $length - 1) && $flag;$i ++){
$flag = FALSE;
for($j = $length - 2;$j >= $i;$j --){
if($arr[$j] > $arr[$j + 1]){
swap($arr,$j,$j+1);
$flag = TRUE;
}
}
}
}
快速查找
function getQuick($arr){
$len = count($arr);
if($len <= 1){
return $arr;
}
$num = $arr[0];
$big = array();
$small = array();
foreach($arr as $v){
if($v > $num)
$big[] = $v;
if($v < $num)
$small[] = $v;
}
$big = getQuick($big);
$small = getQuick($small);
return array_merge($big, array($num), $small);
}
二分查找
$arr1 = array(1,2,3,4,5,6,7,8,9,12,23,33,35,56,67,89,99);
function bin_sch($array, $low, $high, $k){
if ($low <= $high){
$mid = intval(($low+$high)/2);
if ($array[$mid] == $k){
return $mid;
}elseif ($k < $array[$mid]){
return bin_sch($array, $low, $mid-1, $k);
}else{
return bin_sch($array, $mid+1, $high, $k);
}
}
return -1;
}
function getCheck($arr1,$num){
$len = count($arr1);
$low = 0;
$high = $len -1;
while($low <= $high){
$middle = floor(($low + $high)/2);
if($num == $arr1[$middle]){
return $middle;
}elseif($num < $arr1[$middle]){
$high = $middle -1 ;
}else{
$low = $middle +1 ;
}
}
}