php实现冒泡
PHP实现冒泡排序
冒泡排序是一种简单的排序算法,通过重复地遍历要排序的列表,比较相邻的元素并交换它们的位置来完成排序。以下是PHP实现冒泡排序的几种方法。
基础实现
function bubbleSort($array) {
$length = count($array);
for ($i = 0; $i < $length - 1; $i++) {
for ($j = 0; $j < $length - $i - 1; $j++) {
if ($array[$j] > $array[$j + 1]) {
$temp = $array[$j];
$array[$j] = $array[$j + 1];
$array[$j + 1] = $temp;
}
}
}
return $array;
}
$unsortedArray = [64, 34, 25, 12, 22, 11, 90];
$sortedArray = bubbleSort($unsortedArray);
print_r($sortedArray);
优化版本
通过添加标志位来优化冒泡排序,避免在数组已经有序的情况下继续不必要的遍历。
function optimizedBubbleSort($array) {
$length = count($array);
for ($i = 0; $i < $length - 1; $i++) {
$swapped = false;
for ($j = 0; $j < $length - $i - 1; $j++) {
if ($array[$j] > $array[$j + 1]) {
$temp = $array[$j];
$array[$j] = $array[$j + 1];
$array[$j + 1] = $temp;
$swapped = true;
}
}
if (!$swapped) {
break;
}
}
return $array;
}
$unsortedArray = [64, 34, 25, 12, 22, 11, 90];
$sortedArray = optimizedBubbleSort($unsortedArray);
print_r($sortedArray);
双向冒泡排序
双向冒泡排序(鸡尾酒排序)通过从左到右和从右到左交替遍历数组,进一步提高排序效率。
function cocktailSort($array) {
$length = count($array);
$left = 0;
$right = $length - 1;
while ($left < $right) {
for ($i = $left; $i < $right; $i++) {
if ($array[$i] > $array[$i + 1]) {
$temp = $array[$i];
$array[$i] = $array[$i + 1];
$array[$i + 1] = $temp;
}
}
$right--;
for ($i = $right; $i > $left; $i--) {
if ($array[$i] < $array[$i - 1]) {
$temp = $array[$i];
$array[$i] = $array[$i - 1];
$array[$i - 1] = $temp;
}
}
$left++;
}
return $array;
}
$unsortedArray = [64, 34, 25, 12, 22, 11, 90];
$sortedArray = cocktailSort($unsortedArray);
print_r($sortedArray);
注意事项
冒泡排序的时间复杂度为O(n²),适用于小规模数据排序。对于大规模数据,建议使用更高效的排序算法如快速排序或归并排序。







