PHP两种基础的算法:冒泡、快速排序法》》》望能够帮助到大家

本文介绍了两种经典的排序算法——冒泡排序与快速排序,并提供了PHP实现代码。冒泡排序通过不断交换相邻元素来逐步排序整个数组;而快速排序则采用分治策略,选择基准元素并递归地对数组进行划分。

首先扯个淡@@@@@@@@@

算法是程序的核心,一个程序的好坏关键是这个程序算法的优劣。

冒泡排序法 原理:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒(就像冒泡似的)。即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换


给定的数组:$arr(1,43,54,62,21,66,32,78,36,76,39);
开始撸代码:::::

 1 <?php 
 2 $arr=array(1,43,54,62,21,66,32,78,36,76,39); 
 3 function bubbleSort($arr)
 4 { 
 5 $len=count($arr);
 6 //该层循环控制 需要冒泡的轮数
 7 for($i=1;$i<$len;$i++)
 8 { //该层循环用来控制每轮 冒出一个数 需要比较的次数
 9 for($k=0;$k<$len-$i;$k++)
10 {
11 if($arr[$k]>$arr[$k+1])
12 {
13 $tmp=$arr[$k+1];
14 $arr[$k+1]=$arr[$k];
15 $arr[$k]=$tmp;
16 }
17 }
18 }
19 return $arr;
20 }
21 ?>

 

快速排序法选择一个基准元素,通常选择第一个元素或者最后一个元素。通过扫描,将要排序列分成两个部分。一部分比基准元素小,一部分比基准元素大。此时基准元素在其排好序后的正确位置,然后再以递归的方法排序划分两个部分。

撸代码:

 1 <?php
 2 function quickSort($arr) {
 3 //先判断是否需要继续进行
 4 $length = count($arr);
 5 if($length <= 1) {
 6 return $arr;
 7 }
 8 //选择第一个元素作为基准
 9 $base_num = $arr[0];
10 //遍历除了标尺外的所有元素,按照大小关系放入两个数组内
11 //初始化两个数组
12 $left_array = array(); //小于基准的
13 $right_array = array(); //大于基准的
14 for($i=1; $i<$length; $i++) {
15 if($base_num > $arr[$i]) {
16 //放入左边数组
17 $left_array[] = $arr[$i];
18 } else {
19 //放入右边
20 $right_array[] = $arr[$i];
21 }
22 }
23 //再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数
24 $left_array = quick_sort($left_array);
25 $right_array = quick_sort($right_array);
26 //合并
27 return array_merge($left_array, array($base_num), $right_array);
28 }
29 
30 ?>

 

转载于:https://www.cnblogs.com/yaqiangyinsi/p/6099208.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值