php快速排序算法
基本思想原理
快速排序(Quicksort)是对冒泡排序的一种改进。他的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行快速排序,整个排序过程可以递归进行,以达到整个序列有序的目的。
首先在数组中选择一个基准值
将数组中大于基准值的放在一边,小于基准值的放在另一边,基准值放在中间的位置
递归的对分列两边的数组进行排序
//快速排序算法
public function quickSort($array)
{
if (count($array) <= 1) {
return $array;
}
$defaultValue = $array[0];
$leftArray = [];
$rightArray = [];
for ($i = 1; $i < count($array); $i++) {
if ($array[$i] > $defaultValue)
$rightArray[] = $array[$i];
else
$leftArray[] = $array[$i];
}
$leftArray = self::quickSort($leftArray);
$leftArray[] = $array[0];
$rightArray = self::quickSort($rightArray);
return array_merge($leftArray, $rightArray);
}
php冒泡算法排序
基本原理
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数
3.针对所有的元素重复以上的步骤,除了最后一个
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
//冒泡算法
public function bubbleAlgorithm($array)
{
if (!is_array($array)) {
return false;
}
for ($i = 1; $i < count($array); $i++) {
for ($j = 0; $j < count($array) - $i; $j++) {
if ($array[$j] > $array[$j + 1]) {
$tmp = $array[$j];
$array[$j] = $array[$j + 1];
$array[$j + 1] = $tmp;
}
}
}
return $array;
}