废话不说直接上代码
快速排序
随机获取一个key
[一般是$arr[0]],通过反复对比 大于key的放到右边,小于key的放到左边,然后递归,最后把三个数组进行合并.
public function QuickSortA(array $arr) {
$len = count($arr);
if ($len < 2) {
return $arr;
}
$key = $arr[0];
$leftArr = $rightArr = array();
for ($i = 1; $i < $len; $i++) {
if ($arr[$i] < $key) {
$leftArr[] = $arr[$i];
} else {
$rightArr[] = $arr[$i];
}
}
//递归处理
$leftArr = self::quickSortA($leftArr);
$rightArr = self::quickSortA($rightArr);
return array_merge($leftArr, array($key), $rightArr);
}
冒泡排序
将值做反复比对,如果$arr[1] > $arr[2]
那么就交换位置,每轮会得到一个最大数,就是冒泡.
public function BubbleSortA(array $arr) {
$len = count($arr);
if ($len < 2) {
return $arr;
}
for ($i = 0; $i < $len; $i++) {
for ($j = 0; $j < $len - $i - 1; $j++) {
if ($arr[$j] > $arr[$j + 1]) {
$temp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $temp;
}
}
}
return $arr;
}