php 冒泡排序详解非常详细

php 冒泡排序算法 优化版本 php优化版本的冒泡排序算法 立即下载

一、简述

    php冒泡排序法是计算机中的一种简单的排序算法。在对数组排序时会根据数组的长度重复的去比较数组中的值,如果顺序不对就把两个数据位置进行对调,一直比较到没有需要交换的值为止完成排序。

二、为啥叫冒泡排序法?

    当我们在看一个泉水中的泡泡时会发现,泡泡从泉地下冒出来的泡泡会随着往上越滚越大直至冒出水面(因为水温上升,水中溶解的气体减少,所以不能溶解的气体就出来,泉水冒泡;还由于水温度上升,密度减小,所以热水会向上运动,携带气体上升!)。在程序中,也是类似泉水中的现象,通过比较两个值得大小,然后把大的放在后面小的放在前面,然后再比较第三个数,再进行比较,小的放第二位,打的放第三位,依次下去直至最后一个数,所以在第一轮排序中,大的会不停的往后走,直至最大的那个值,并放到最后的那个位置。进行第一轮排序时已近找到最大值,并放在末尾。第一轮排序后,还有剩下的数据要排,所以还要排n-1轮。

三、排序的详细过程

    如数组:$sort = array(6,1,2,4,5,3);进行冒泡排序

开始排序:6,1,2,4,5,3(从小到大)

第一轮排序:

第一次:1,6,2,4,5,3

第二次:1,2,6,4,5,3

第三次:1,2,4,6,5,3

第四次:1,2,4,5,6,3

第五次:1,2,4,5,3,6

第二轮排序:

第一次:1,2,4,5,3,6

第二次:1,2,4,5,3,6

第三次:1,2,4,5,3,6

第四次:1,2,4,3,5,6

第三轮排序:

第一次:1,2,4,3,5,6

第二次:1,2,4,3,5,6

第三次:1,2,3,4,5,6

第四轮排序:

第一次:1,2,3,4,5,6

第二次:1,2,3,4,5,6

第五轮排序:

第一次:1,2,3,4,5,6

四、排序代码

    通过上面的排序会发现,排序的轮数是数组的长度(n-1),然后依次减少次数,那是因为每次在比较的时候需要进行至少两个数的比较,当到达最后一个数时,肯定是没有数字进行比较的所有当排序到倒数第二个数时,已经是最后要比较的数了。所以轮次是数组长度减一次。而每轮中的次数也是依次减少,那个因为在第一轮中已经找到到了最大的那个值,第二轮的时候就找到了从后面开始算第二大的值。而值时在每次中进行两两位置交换过来的。

    在使用php编写排序算法的时候就需要用到两个for循环来进行排序了,外层for进行轮次的控制,内层for进行次数的控制和值得位置交换,由此得知,php冒泡排序法实现代码如下:

php

<?php $sort = array(6,9,7,11,2,1,3,8,5,10,4,12); $len = count($sort); //控制轮次数 for($i=1;$i<$len;$i++){ //控制次数,并判断大小交换位置 for($j=0;$j<$len-$i;$j++){ //如果当前值大于后面的值 if($sort[$j]>$sort[$j+1]){ //位置交换 //把大的值给临时变量 $tmp = $sort[$j]; //后面的小值替换大值 $sort[$j] = $sort[$j+1]; //大值替换小值 $sort[$j+1] = $tmp; } } } var_dump($sort); php //输出结果 array (size=12) 0 => int 1 1 => int 2 2 => int 3 3 => int 4 4 => int 5 5 => int 6 6 => int 7 7 => int 8 8 => int 9 9 => int 10 10 => int 11 11 => int 12 上面的排序是从小到大的冒泡排序,下面是从大到小的排序代码: php <?php #从大到小排序 $sort = array(6,9,7,11,2,1,3,8,5,10,4,12); $len = count($sort); for($i=1;$i<$len;$i++){ for($j=0;$j<$len-$i;$j++){ if($sort[$j]<$sort[$j+1]){ $tmp = $sort[$j]; $sort[$j] = $sort[$j+1]; $sort[$j+1] = $tmp; } } } var_dump($sort); ?>

五、php排序函数

    在php其实已经给我们封装好了数组的排序函数,如:

sort() 函数用于对数组单元从低到高进行排序。

rsort() 函数用于对数组单元从高到低进行排序。

asort() 函数用于对数组单元从低到高进行排序并保持索引关系。

arsort() 函数用于对数组单元从高到低进行排序并保持索引关系。

ksort() 函数用于对数组单元按照键名从低到高进行排序。

krsort() 函数用于对数组单元按照键名从高到低进行排序。

PHP简单实现冒泡排序的方法 本文实例讲述了PHP简单实现冒泡排序的方法。分享给大家供大家参考,具体如下: <?php $files = array("file11.txt","file22.txt","file1.txt","file2.txt"); function mySort($arr,$nat=false) { for($i=0;$i<count($arr);$i++) { for($j=0;$j<count($arr)-$i-1;$j++) { if($nat) { //按照strnatcmp()自然排序函数 if(strnatcmp 立即下载

相关推荐

PHP排序--冒泡排序

前言 这个应该是最大众的排序了。也算是简单排序算法中知名度最高的。 冒泡排序的思路是怎么样的呢? 首先就是先比较相邻的两个元素,如果满足条件,就交换,否则不动。 然后是再比较接下来的两个相邻的元素,然后满足条件就交换,否则依然不动。 依次循环操作下去,最终一个元素,会固定在最下边。 举例: 数组有5个元素从小到大排序,首先第一个和第二个比,第一个比第二个大,就交换,否则不操作 然后第二个和第三个比较,第二个大于第三个则交换,否则依然不动。直到对比到第四个和第五个对比。 经过一轮的循环对比,最大的数字就下沉到

qianmengkk的博客 6670

SkyWalking跨线程Trace传递实战:手把手教你用RunnableWrapper解决异步链路中断问题

本文深入解析了SkyWalking在异步编程场景下链路追踪中断的根源,并提供了使用RunnableWrapper等官方包装类的实战解决方案。通过详细的原理解析和代码示例,手把手指导开发者如何实现跨线程的Trace传递,确保分布式系统监控链路的完整性,有效解决异步任务导致的链路中断问题。

sand8的博客 493

使用PHP实现冒泡排序

一,什么是冒泡算法 冒泡算法,是一种计算机科学领域里比较简单的排序算法。它需要重复的走访过要排序的数列,依次比较两个相邻的元素,如果顺序错误就进行交换,一直到没有相邻元素需要交换,即排序完成。 这个算法的名字由来是因为越小的元素经过交换之后,会慢慢的浮到数列的顶端,就像碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。 二,冒泡算法的原理 冒泡排序算法的原理如下: 1,比较相邻的两个元素,如果第一个比第二个大,就交换他们两个; ...

程序猿零壹的博客 5434

Z-Image Turbo随机性增强插件的下载教程及使用方法 z-image生成图像太相似怎么办 Z-Image Turbo 整合包下载

Z-Image Turbo 是出了名的“seed 不敏感”,非常难做多样化图像创作。ComfyUi-ConditioningNoiseInjection 插件通过在conditioning(提示词编码)阶段加入可控噪声,成功解决了 Turbo 随机性不足的问题。它不仅能让 Turbo 产生更丰富的构图差异,还能保持主题稳定,是目前我测试过最有效的 Turbo 随机性增强工具。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1978

【AUTOSAR-COM】-10.5-APP CAN Frame/PDU“发送周期不准“的影响因素

一个Tx PDU在COM模块中的数据流; Tx APP CAN Frame/PDU"发送周期不准"的影响因素;

「汽车电子助手」的博客 2386

java 100以内冒泡算法_Java俩种形式实现冒泡排序

数据排序的重要性在实际项目开发中的重要性不言而喻,无论是数据整理还是分析都离不开排序这道工序。————————————-冒泡排序——是一种比较简单的排序方法,也是在数据结构课程中我们学习到的第一种排序方法。但是冒泡排序在简单排序中属于时间复杂度较高的方法,用大O表示法为O(N*N)。可是虽然如此,这种排序的思想仍然需要我们去很好的掌握,而且由于其在理解上较为容易,所以在数据量较少(此数量级基本上感...

weixin_34862004的博客 418

为什么devc++编译项目会失败?提示gcc无法正常启动...

根据你的描述,编译能正常进行时,只打开源文件并没有问题,问题主要出现在创建项目后编译失败,这通常与 Makefile 配置、环境变量、编译器路径设置等因素有关。你可以检查 Makefile 配置,验证 DevC++ 的编译器环境设置,或者尝试清理并重新配置项目。如果问题仍然存在,可以尝试重装 DevC++ 或重新配置工具链。希望如上措施及解决方案能够帮到有需要的你。

**My Coding Family** 1376

php详解冒泡排序,PHP冒泡排序算法详解

在学习时我们经常会被老师拿几个数字来让大家进行各种排序,下面我来给各位同学介绍一下PHP冒泡排序算法,大家可直接合去给你老题师哈。排序实现过程如下:49 38 65 97 76 13 2738 49 65 97 76 13 27 比较第1个和第2个数,小的放前边,大的放后边 38 49 65 97 76 1...

weixin_42134144的博客 327

后仿真中《SDF反标必懂连载篇》之 Negative Delay (理论篇)

今天,学习一下SDF文件中的负数延时问题。比如下面的图片中的SETUPHOLD 中的hold time 为负数。

那么菜的博客 2574

基于TENG的呼吸测量与识别系统:从蓝牙到WiFi的改造与上位机实现

本文介绍了一种基于摩擦纳米发电机(TENG)的呼吸测量系统改造方案,将原有蓝牙通信升级为WiFi传输。系统通过TENG传感器采集呼吸信号,STM32微控制器处理数据后,经ESP8266 WiFi模块发送至上位机。文中详细阐述了硬件改造(四通道改单通道、蓝牙换WiFi)、嵌入式软件修改(包括ESP8266驱动、数据采集与TCP通信实现)以及上位机软件设计。改造后的系统提升了传输距离和稳定性,为可穿戴健康监测提供了更优解决方案。

huanghm88的专栏 110

php冒泡排序详解笔记,php冒泡排序算法的深入分析

这篇文章主要为大家详细介绍了php冒泡排序算法的深入分析,具有一定的参考价值,可以用来参考一下。感兴趣的小伙伴,下面一起跟随512笔记的小玲来看看吧!交换排序的基本思想:两两比较待排序的数据,如果发生逆序,则交换之,直到全部数据都排好序为止。•冒泡排序的基本思想:1.从后往前,扫描所有的数据,如果相邻的两个数发生逆序,则互换。--第1趟冒泡2.从后往前,扫描最后一个到第2个数据,如果相邻的两个数发...

weixin_31063289的博客 156

实现基于 Python 和 xterm.js 的 Web 交互终端demo

前端 (HTML):使用 xterm.js 作为前端终端模拟器库。创建了一个 WebSocket 连接到 ws://localhost:8765,这与后端服务器的地址和端口匹配。监听 WebSocket 消息,并将数据写入终端。同时监听用户输入并发送到服务器。后端 (Python):使用 websockets 库来创建 WebSocket 服务器,监听端口 8765。使用 paramiko 库来创建 SSH 客户端并连接到指定的远程服务器。

u010674101的专栏 876

php冒泡排序循环含义,PHP冒泡排序算法详解

在学习时我们经常会被老师拿几个数字来让大家进行各种排序,下面我来给各位同学介绍一下PHP冒泡排序算法,大家可直接合去给你老题师哈。排序实现过程如下:49 38 65 97 76 13 2738 49 65 97 76 13 27 比较第1个和第2个数,小的放前边,大的放后边 38 49 65 97 76 1...

weixin_42297982的博客 133

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

php冒泡排序详解笔记,PHP冒泡排序算法

php实现的冒泡排序算法,还木有理解冒泡排序算法的原理的phper可以研究下,还算是比较好懂的!//冒泡排序(一维数组)function bubble_sort($array){$count=count($array);if($count <= 0){return false;}for($i=0; $ifor($j=0; $jif($array[$j] > $array[$j+1]){...

weixin_28730549的博客 286

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

php冒泡程序讲解,PHP冒泡排序使用详解

这次给大家带来PHP冒泡排序使用详解,PHP冒泡排序使用的注意事项有哪些,下面就是实战案例,一起来看一下。基本思想:冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。最简单排序实现:我们先来看看在没有学习各种排序方法前经常使用的排序方法(至少我是这样。。。。)://这里使用了类型提示(type hint) array,不熟悉或者不习惯的同学大...

weixin_34952628的博客 197

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

php冒泡程序讲解,PHP冒泡排序详解

PHP冒泡排序详解function BubbleSort($str)//定义一个名为BubbleSort的函数,它有一个参数叫$str,这个参数必须是一个数组,这个数组里包含需要排序的一系列字符。{for ($i=0;$i//第一层循环,外层循环,由于冒泡排序的原理为,每次都找最小(或每次都找最大,本例是演示每次都找最小的情况)的那个字符,找出一个最小(“大”)的字符算一次循环{for ($j=c...

weixin_31238185的博客 280

php冒泡排序详解笔记

php冒泡排序详解笔记 冒泡 /* 冒泡排序(从小到大) 介绍: 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。 思路: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对第0个到第n-1个数据做同样的工作。这时,最大的数就“浮”到了数组最后的位置上 针对所有的元素重复以上的步骤,除了最后一个 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字...

weixin_45046275的博客 127

php编写冒泡排序算法_PHP排序算法之冒泡排序(Bubble Sort)实现方法详解

本文实例讲述了PHP排序算法之冒泡排序(Bubble Sort)实现方法。分享给大家供大家参考,具体如下:基本思想:冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。最简单排序实现:我们先来看看在没有学习各种排序方法前经常使用的排序方法(至少我是这样。。。。)://这里使用了类型提示(type hint) array,不熟悉或者不习惯的同学大...

weixin_28717939的博客 1729

php冒泡排污算法,PHP冒泡排序算法详解

在学习时我们经常会被老师拿几个数字来让大家进行各种排序,下面我来给各位同学介绍一下PHP冒泡排序算法,大家可直接合去给你老题师哈。排序实现过程如下:49 38 65 97 76 13 2738 49 65 97 76 13 27 比较第1个和第2个数,小的放前边,大的放后边 38 49 65 97 76 1...

weixin_29332867的博客 135

PHP冒泡排序详解

<?php function BubbleSort($str) //定义一个名为BubbleSort的函数,它有一个参数叫$str,这个参数必须是一个数组,这个数组里包含需要排序的一系列字符。 { for ($i=0;$i<count($str)-1;$i++) //count($str)的功能为统计数组中的元素数量,并返回这个数量值 //第一层循环,外层循环,由于冒泡排序的原理为,每次都找最小

码梦空间 1361

php冒泡排序 讲解,PHP冒泡排序(Bubble Sort)算法详解

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

weixin_39664995的博客 185
上一篇: 在PHP中for和foreach的区别
下一篇: 选择排序
ffrfdf
博客等级 码龄7年 0粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值