PHP实现冒泡排序的简单实例
1、首先我们必须弄清楚什么是冒泡排序,不理解冒泡排序的原理,我们就无法写出代码。
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。
PHP实现代码:
<?php
//冒泡排序方法
function bubblesort(&$arr){
//定义一个变量保存交换的值
$temp =0;
for($i=0;$i<count($arr);$i++){
for($j=0;$j<count($arr)-$i-1;$j++){
if($arr[$j]>$arr[$j+1]){
//如果前面的那个数大于后面的那个数,那么他们就进行交换
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
}
}
}
}
$arr=array(100,99,200,5,-4,6,-7);
bubbleSort($arr);
print_r($arr); //数组是值传递,所以传递的时候加个&符号就是地址传递,改变外部变量
?>
以上这篇PHP实现冒泡排序的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
PHP 冒泡排序算法的实现代码
基本概念 冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面.即首先比较第1 个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后.重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数.如此下去,直至最终完成排序. 由
-
php冒泡排序与快速排序实例详解
本文实例分析了php冒泡排序与快速排序算法.分享给大家供大家参考,具体如下: $a=array('3','8','1','4','11','7'); print_r($a); $len = count($a); //从小到大 for($i=1;$i<$len;$i++) { for($j=$len-1;$j>=$i;$j--) if($a[$j]<$a[$j-1]) {//如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了 $x=$a[$j];
-
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
一.冒泡排序 复制代码 代码如下: //冒泡排序function bubble_sort($array){ $count=count($array); if($count <= 0){ return false; } for($i=0;$i<$count;$i++){ for($j=0;$j<$count-$i-1;$j++){ if( $array[$j] > $array[$j+1] ){
-
PHP 数据结构 算法描述 冒泡排序 bubble sort
复制代码 代码如下: <?php /** * 冒泡排序 bubble sort * * 原理:多次循环进行比较,每次比较时将最大数移动到最上面.每次循环时,找出剩余变量里的最大值,然后减小查询范围.这样经过多次循环以后,就完成了对这个数组的排序 */ function sort_bubble($list) { $len = count($list); if(empty($len)) return $list; for($i = 0;$i < $len; $i++) { for($j = $i
-
排序算法之PHP版快速排序、冒泡排序
一.快速排序 1.简介快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来.快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists).2.步骤从数列中挑出一个元素,称为 "基准&quo
-
php排序算法(冒泡排序,快速排序)
冒泡排序实现原理 ① 首先将所有待排序的数字放入工作列表中.② 从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交换. ③ 重复步骤②,直至再也不能交换. 代码实现 复制代码 代码如下: <?php function bubbingSort(array $array) { for($i=0, $len=count($array)-1; $i<$len; ++$i) { for($j=$len; $j>$i;
-
php 冒泡排序 交换排序法
复制代码 代码如下: $a=array('11','2','13','4','22'); $num = count($a); for($i=0;$i<$num;$i++){ for($j=0;$j<$num;$j++){ if($a[$i]<$a[$j]){ $temp = $a[$i]; $a[$i]=$a[$j]; $a[$j]=$temp; } } } print_r($a);
-
又一个PHP实现的冒泡排序算法分享
经典的冒泡排序法一直是许多程序沿用的其中一种排序法,话说冒泡排序法在效率上比PHP系统函数sort更高效.本章不讨论性能,所以就不拿它来跟系统性能做对比了. 冒泡排序大概的意思是依次比较相邻的两个数,然后根据大小做出排序,直至最后两位数.由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序.但其实在实际过程中也可以根据自己需要反过来用,大树往前放,小数往后放. <?php /** * PHP中的冒泡排序法使用 */ // 预先声明一个数组 $arr = array (1
-
php数组冒泡排序算法实例
本文实例讲述了php数组冒泡排序算法.分享给大家供大家参考,具体如下: <?php /*@冒泡排序算法 */ $array=array(5,45,22,11,32,28,35,56,17,21,92); $len=count($array);//计算数组长度 for($i=0;$i<$len-1;$i++){//需要比较$len-1轮,每一轮需要比较$len-1次 for($j=0;$j<$len-1;$j++){//需要比较$len-1次,因为循环到最后一个数时,后面没有数可以比较了,
-
基于php冒泡排序算法的深入理解
交换排序的基本思想:两两比较待排序的数据,如果发生逆序,则交换之,直到全部数据都排好序为止.•冒泡排序的基本思想:1.从后往前,扫描所有的数据,如果相邻的两个数发生逆序,则互换.--第1趟冒泡2.从后往前,扫描最后一个到第2个数据,如果相邻的两个数发生逆序,则互换.--第2趟冒泡3.如此依次进行,直到进行n-1趟冒泡,或者在某趟冒泡中,没有逆序的情况即可提前结束. 复制代码 代码如下: <script>var arr = [15,8,7,9,10,0]; var _len = arr.leng
-
PHP冒泡排序算法代码详细解读
复制代码 代码如下: <?php $arr = array(345,4,17,6,52,16,58,69,32,8,234); $n = count($arr); for($i=1;$i<$n;$i++){ //其中的为什么$n-1是因为数组是从0开始计算的 //接下来是第一次内循环 for($j=$n-1;$j>=$i;$j--) { //如果$arr[10]<$arr[9]; //temp = $arr[9]; if($arr[$j]<$arr[$j-1]){ //$te
随机推荐
- Javascript中call和apply函数的比较和使用实例
- 使用Bootstrap + Vue.js实现添加删除数据示例
- Windows Server 2012 R2添加Windows Server Backup 功能
- iOS 对象属性详细介绍
- 得到当前行的值的javascript代码
- 简单的js分页脚本
- jQuery实现搜索页面关键字的功能
- asp.net GridView排序简单实现
- PHP常用文件操作函数和简单实例分析
- php 下载保存文件保存到本地的两种实现方法
- 基于php实现长连接的方法与注意事项的问题
- Winserver2012下mysql 5.7解压版(zip)配置安装教程详解
- PHP依赖倒置(Dependency Injection)代码实例
- JavaScript中的typeof操作符用法实例
- 图片onload事件触发问题解决方法
- Android中PopupWindow使用方法详解
- Android触屏事件和MotionEvent详解
- .NET Core利用skiasharp文字头像生成方法教程(基于docker发布)
- RecyclerView通过GridLayoutManager实现多样式布局的示例
- Python学习笔记之函数的定义和作用域实例详解
