您的位置:首页 > 编程语言 > PHP开发

再复习PHP的排序

2013-04-15 09:41 471 查看
早上起来,花了点时间写了一下PHP的冒泡排序和快速排序,作为对以前知识的复习。

冒泡排序:

<?
function bubble_sort($array) {
$size = count($array);
if ($size <= 1) {
return $array;
}

for ($i=0; $i<$size; $i++) {
// 开始冒泡,从末尾开始,小的元素浮上来
for ($j=$size-1; $j>$i; $j--) {
if ($array[$j] < $array[$j-1]) {
$temp = $array[$j];
$array[$j] = $array[$j-1];
$array[$j-1] = $temp;
}
}
}

return $array;
}

$array = array(10, 1, 4, 6, 8, 2, 333, 5, 65, 90);
print_r(bubble_sort($array));


快速排序:

<?php
function quick_sort($array) {
$size = count($array);
if ($size <= 1) {
return $array;
}

// 首元素作为比较对象
$key = $array[0];
$left = array();
$right = array();

// 小的放左边, 大的放右边
for ($i=1; $i<$size; $i++) {
if ($array[$i] < $key) {
$left[] = $array[$i];
} else {
$right[] = $array[$i];
}
}

// 递归处理左边和右边
$left = quick_sort($left);
$right = quick_sort($right);

// 归并
$array = array_merge($left, array($key), $right);
return $array;
}

$array = array(10, 1, 4, 6, 8, 2, 333, 5, 65, 90);
pr(quick_sort($array));


快速排序还有几个变种,例如:随机化快速排序,平衡快速排序,外部快速排序,三路基数快速排序,在今后的日子里,慢慢研究它们。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: