欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > php >内容正文

php

php 版本排序,四种常见排序算法--PHP版本

发布时间:2023/12/4 php 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 php 版本排序,四种常见排序算法--PHP版本 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1、冒泡排序法

/**

* 冒泡排序

* des 对一组数据,比较相邻数据的大小,将值小数据在前面,值大的数据放在后面。

*/

$array = [2,5,1,3,7,4];

$result = bubble_sort($array);

print_r($result);

function bubble_sort($array){

$len = count($array);

for ($i=0; $i < $len; $i++) {

for ($j=0; $j < $len-$i-1; $j++) {

if($array[$j]>$array[$j+1]){

$tmp = $array[$j];

$array[$j] = $array[$j+1];

$array[$j+1] = $tmp;

}

}

}

return $array;

}

2、选择排序法

/**

* 选择排序

* des 在一列数字中,选出最小数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。

*/

$array = [2,5,1,3,7,4];

$result = select_sort($array);

print_r($result);

function select_sort($array){

$len = count($array);

$tmp = 0;

for ($i=0; $i < $len-1; $i++) {

$minIndex = $i;

for ($j=$i+1; $j < $len; $j++) {

if($array[$j]

$minIndex = $j;

}

}

if($i != $minIndex){

$tmp = $array[$i];

$array[$i] = $array[$minIndex];

$array[$minIndex] = $tmp;

}

}

return $array;

}

3、快速排序法

$array = [2,5,1,3,7,4];

$result = quick_sort($array);

print_r($result);

function quick_sort($array){

$len = count($array);

if($len <= 1){

return $array;

}

$base = $array[0];

$left_array = $right_array = array();

for ($i=1; $i < $len; $i++) {

if($array[$i]

$left_array[] = $array[$i];

}else{

$right_array[] = $array[$i];

}

}

$left_array = quick_sort($left_array);

$right_array = quick_sort($right_array);

return array_merge($left_array,array($base),$right_array);

}

4、插入排序法

/**

* 插入排序法

* des 在要排序的一组数中,假设前面的数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。

*/

$array = [2,5,1,3,7,4];

$result = insert_sort($array);

print_r($result);

function insert_sort($array){

$len = count($array);

for ($i=1; $i < $len; $i++) {

$tmp = $array[$i];

for ($j=$i-1; $j >= 0; $j--) {

if($tmp

$array[$j+1] = $array[$j];

$array[$j] = $tmp;

}else{

break;

}

}

}

return $array;

}

附上常见算法时间复杂度、空间复杂度对比

排序法

最差时间分析

平均时间复杂度

稳定度

空间复杂度

冒泡排序

O(n2)

O(n2)

稳定

O(1)

快速排序

O(n2)

O(n*logn)

不稳定

O(logn)~O(n)

选择排序

O(n2)

O(n2)

稳定

O(1)

二叉树排序

O(n2)

O(n*log2n)

不一顶

O(n)

插入排序

O(n2)

O(n2)

稳定

O(1)

堆排序

O(n*log2n)

O(n*log2n)

不稳定

O(1)

希尔排序

O

O

不稳定

O(1)

总结

以上是生活随笔为你收集整理的php 版本排序,四种常见排序算法--PHP版本的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。