欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

php冒泡排序和快速排序

程序员文章站 2022-05-27 20:03:29
...
php代码
<?php
$arr = array(12,1,5,88,35,0,18,100,50,21,28,7,9,9.5);

//交换两值
function swap(&$m, &$n){
	$temp = $m;
	$m = $n;
	$n = $temp;

	/* 如数组中有小数时,以下方法会省略小数点后面的数
	$m = $m ^ $n;
	$n = $m ^ $n;
	$m = $m ^ $n;
	*/
}

//冒泡排序
function bubbleSort($arr){
	if(!is_array($arr)) return $arr;
	$count = count($arr);
	for($i=1; $i<$count; $i++){
		for($j=0; $j $arr[$j+1]){
				/*
				$temp = $arr[$j];
				$arr[$j] = $arr[$j+1];
				$arr[$j+1] = $temp;
				*/
				/*
				$arr[$j] = $arr[$j] + $arr[$j+1];
				$arr[$j+1] = $arr[$j] - $arr[$j+1];
				$arr[$j] = $arr[$j] - $arr[$j+1];
				*/
				/*
				$arr[$j] = $arr[$j] ^ $arr[$j+1];
				$arr[$j+1] = $arr[$j] ^ $arr[$j+1];
				$arr[$j] = $arr[$j] ^ $arr[$j+1];
				*/
				swap($arr[$j], $arr[$j+1]);
			}
		}
	}
	return $arr;
}

$arr2 = bubbleSort($arr);
echo implode(',', $arr2).'';

//冒泡排序
function bubbleSort2($arr){
	if(!is_array($arr)) return $arr;
	$count = count($arr);
	for($i=0; $i<$count-1; $i++){
		for($j=$i+1; $j<$count; $j++){
			if($arr[$i] < $arr[$j]){
				/*
				$arr[$i] = $arr[$i] + $arr[$j];
				$arr[$j] = $arr[$i] - $arr[$j];
				$arr[$i] = $arr[$i] - $arr[$j];
				*/
				swap($arr[$i], $arr[$j]);
			}
		}
	}
	return $arr;
}
$arr3 = bubbleSort2($arr);
echo implode(',', $arr3).'';;

//快速排序
function quickSort($arr){
	if(!is_array($arr)) return $arr;
	$len=count($arr);
	for($i=0; $i<$len; $i++){
		$min = $arr[$i];
		for($j=$i+1; $j $arr[$j]){
				$temp = $arr[$i];
				$arr[$i] = $arr[$j];
				$arr[$j] = $temp;
			}
		}
		$min = $arr[$j];
	}
	return $arr;
}
$arr4 = quickSort($arr);
echo implode(',', $arr4);
?>