啊哈!算法 - 桶排序,冒泡排序,快速排序 - PHP实现

获取随机数组:

function getArray($n){
	while($n){
		$a[] = rand(1,1000);
		$n--;
	}
	return $a;
}

桶排序

function tongSort($n){
	$a = getArray($n);
	$length = max($a);
	for($m=0; $m<$length+1; $m++){
		$i[$m] = 0;
	}
	foreach($a as $val){
		$i[$val]++;
	}
	for($n=$length; $n>=0; $n--){
		for($j=1; $j<=$i[$n]; $j++){
			echo $n,',';
		}
	}
}

冒泡排序

function bubbleSort($n){
    $a = getArray($n);
    $length = count($a);
    for($j = 0; $j < $length-1; $j++){
        for($i = 0; $i< $length-$j-1; $i++){
            if($a[$i] < $a[$i+1]){
                $n = $a[$i+1];
                $a[$i+1] = $a[$i];
                $a[$i] = $n;
            }
        }
    }
    var_dump($a);
}

快速排序

function quickSort($n){
    $a = getArray($n);
    echo 'before sort';
    var_dump($a);
    $length = count($a);
    doQuickSort($a,0,$length-1);
    echo 'after sort';
    var_dump($a);
}
function doQuickSort(array &$a, $i, $j){
    if($i>=$j) return;
    $temp = $a[$i];
    $left = $i;
    $right = $j;
    while($left != $right){
        while($a[$right] >= $temp && $right > $left){
            $right--;
        }
        while($a[$left] <= $temp && $left < $right){
            $left++;
        }
        if($left < $right){
            $t = $a[$left];
            $a[$left] = $a[$right];
            $a[$right] = $t;
        }
    }
    $a[$i] = $a[$left];
    $a[$left] = $temp;
    doQuickSort($a, $i, $left-1);
    doQuickSort($a, $left+1,$j);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值