php快速排序,php冒泡排序和快速排序

本文介绍了两种经典的排序算法——冒泡排序和快速排序。冒泡排序通过相邻元素的比较交换实现升序或降序排列;快速排序则采用分治策略,选择一个中间值,将数组分为两部分并递归排序。虽然现代编程语言提供了内置排序函数如PHP的sort(),但理解这些基础排序算法在面试中仍很重要。
摘要由CSDN通过智能技术生成

冒泡排序原理:依次比较数组相邻的两个数,然后根据其大小做出排序,直至最后两位数。由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。但其实在实际过程中也可以根据自己需要反过来用,大树往前放,小数往后放。// 冒泡算法

function maopao($arr) {

for ($i = 0; $i < count($arr); $i++) {

for ($j = 0; $j < count($arr) - 1; $j++) {

if ($arr[$i] < $arr[$j]) { //依次比较大小

$tem = $arr[$i];

$arr[$i] = $arr[$j];

$arr[$j] = $tem;

}

}

}

return $arr;

}

快速排序:先随便取一个数组中的数作为中间值,然后拿去和数组中的每一个数作比较,比它小的数都统一放到一个数组,比它大的数也都放到一个数组,这样数组就被分为了三部分:左边数组(比中间值小)、中间值、右边数组(比中间值大)。然后继续递归用相同的方式来排序左边和右边,最后合并数组就行了。function quick($arr) {

//需要确保数组长度不小于1,否则会报错

if (count($arr) <= 1) {

return $arr;

}

$key = $arr[0]; //中间值

$left_arr = array(); //定义左边数组

$right_arr = array();//定义右边数组

//循环比较,小的放左边数组,大的放右边

for ($i = 1; $i < count($arr); $i++) {

if ($arr[$i] <= $key) {

$left_arr[] = $arr[$i];

} else {

$right_arr[] = $arr[$i];

}

}

// 递归排序划分好的两边

$left_arr = quick($left_arr);

$right_arr = quick($right_arr);

//最后合并返回

return array_merge($left_arr, array($key), $right_arr);

}

怎么说呢,排序算法在实际开发中基本用不到,因为对于这样的排序只需要php的一个函数就轻轻松松实现了,sort($arr)就这几个字母就搞定了。

不过这些算法恐怕也就只有面试的时候才会用上吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值