冒泡排序指的是依次比较相邻的两个数,然后根据大小做出排序,直至最后两位数。因为在排序的

过程中总是小数放前面,大数放后面,和气泡上升有点类似,所以又称作冒泡排序。

下面通过一个实例看一下如何实现冒泡排序:

/**
冒泡排序算法实例
*/ // 通过一个数组做演示
$demo_array = array(33,25,43,75,1,2,6,3,11,5,20,32,65); for($i = 0;$i < count($demo_array); $i++) {
for($j = $i + 1;$j < count($demo_array); $j++) {
// 比较数组中相邻两个数值的大小
if($demo_array[$i] < $demo_array[$j]) {
// 互换变量
$tmp = $demo_array[$i];
$demo_array[$i] = $demo_array[$j];
$demo_array[$j] = $tmp;
}
}
} var_dump($demo_array);

运行结果:

array (size=13)
0 => int 75
1 => int 65
2 => int 43
3 => int 33
4 => int 32
5 => int 25
6 => int 20
7 => int 11
8 => int 6
9 => int 5
10 => int 3
11 => int 2
12 => int 1

从上面的结果中,我们可以看到,数组中的键值顺序已经发生变化,排序成功。

仔细看上面的代码,我们发现关键的一步就是互换变量,这个也是冒泡排序的核心要点。我们现在把

这一块单独拿出来通过下面示例看一下。

示例:现在有两个变量,$A = 3、$B = 5,我们的需求是将这两个变量互换,使得 $A = 5、$B。

这就像是我们有两瓶水,我想把 A 中的水倒入 B 中,把 B 中的水倒入 A 中,那么此时我们就会引入第

三个空瓶子 C,充当一个暂存的作用

$C = $A; // 将 A 中的水倒入 C ,此时 A 为空瓶
$A = $B; // 将 B 中的水倒入A,此时 B为空瓶
$B = $C;//将 C(A) 中的水倒入 B,互换成功

总结:

所以,关于冒泡排序的关键点就两个:

1.循环比较

2.互换键值

-------------------------------------------------------------------手动分割线--------------------------------------------------------

2018/10/15 更新

Go 语言版的冒泡排序,原理是一样的,代码如下:

package main

import (
"fmt"
) // 数组 array
func main() {
// go 语言版的冒泡排序
array_demo := [...]int{33, 25, 43, 75, 1, 2, 6, 3, 11, 5, 20, 32, 65}
array_len := len(array_demo) for i := 0; i < array_len; i++ {
for j := i + 1; j < array_len; j++ {
// 比较相邻两个数的大小
if array_demo[i] < array_demo[j] {
tmp := array_demo[i]
array_demo[i] = array_demo[j]
array_demo[j] = tmp
}
}
} fmt.Println(array_demo)
}

运行结果如下:

[ `go run arr.go` | done: 1.433s ]
[75 65 43 33 32 25 20 11 6 5 3 2 1]

  

PHP 冒泡排序(Bubble Sort)的更多相关文章

  1. Java中的经典算法之冒泡排序(Bubble Sort)

    Java中的经典算法之冒泡排序(Bubble Sort) 神话丿小王子的博客主页 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一 ...

  2. java排序算法之冒泡排序(Bubble Sort)

    java排序算法之冒泡排序(Bubble Sort) 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数 ...

  3. 排序算法--冒泡排序(Bubble Sort)_C#程序实现

    排序算法--冒泡排序(Bubble Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来非常困 ...

  4. 【排序算法】冒泡排序(Bubble Sort)

    0. 说明 参考 维基百科中的冒泡排序 冒泡排序 (Bubble Sort) 是与插入排序拥有相等的执行时间,但是两种算法在需要的交换次数却很大地不同. 在最坏的情况,冒泡排序需要 O(n2)  次交 ...

  5. 冒泡排序(Bubble Sort),比较次数优化改进

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  6. 冒泡排序(Bubble Sort)

    常见的排序算法有Bubble Sort.Merge Sort.Quick Sort 等,所有排序算的基本法思想都是把一个无限大的数据规模通过算法一步步缩小,指导最后完成排序. 这里分享一下Buuble ...

  7. [算法] 冒泡排序 Bubble Sort

    冒泡排序(Bubble Sort,台湾另外一种译名为:泡沫排序)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没 ...

  8. 算法之经典排序-冒泡排序(bubble sort)

    冒泡排序 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. 这个算法的名字由来是因为越大的元 ...

  9. C语言讲义——冒泡排序(bubble sort)

    冒泡排序三步走: 循环 交换 回一手 一个数和其它数比较(循环) 每个数都要做这种比较(再一层循环) 准备工作 #include <stdio.h> void sort(int arr[] ...

  10. 经典排序算法 - 冒泡排序Bubble sort

    原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子 ...

随机推荐

  1. scrapy框架 + selenium 爬取豆瓣电影top250......

    废话不说,直接上代码..... 目录结构 items.py import scrapy class DoubanCrawlerItem(scrapy.Item): # 电影名称 movieName = ...

  2. Linux基础命令---文本显示tac

    tac 将指定文件中的行,按照反序方式显示.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法         tac [选项] ...

  3. java 数组和集合

    1.概念说明 区别:数组固定长度的,集合,数组的长度是可以变化的. List,继承Collection,可重复.有序的对象 Set,继承Collection,不可重复.无序的对象 Map,键值对,提供 ...

  4. Kafka学习笔记之Kafka三款监控工具

    0x00 概述 在之前的博客中,介绍了Kafka Web Console这 个监控工具,在生产环境中使用,运行一段时间后,发现该工具会和Kafka生产者.消费者.ZooKeeper建立大量连接,从而导 ...

  5. mysql误删数据快速恢复

    相信后端研发的同学在开发过程经常会遇到产品临时修改线上数据的需求,如果手法很稳那么很庆幸可以很快完成任务,很不幸某一天突然手一抖把表里的数据修改错误或者误删了,这个时候你会发现各种问题反馈接踵而来.如 ...

  6. ldap服务备份与恢复

    备份: cat ldap_backup.sh #!/bin/bash/usr/sbin/slapcat >/S3/openldap/openldap_backup_`date -d " ...

  7. kali linux Burp Suite使用教程

    设置Firefox并配置代理 配置Firefox Burp Suite包含拦截代理. 要使用Burp Suite,您必须配置浏览器以通过Burp Suite代理传递其流量. 这对于Firefox来说并 ...

  8. Codeforces Round #439 (Div. 2) Problem C (Codeforces 869C) - 组合数学

    — This is not playing but duty as allies of justice, Nii-chan! — Not allies but justice itself, Onii ...

  9. 检测 C++ 内存泄露

    转载:http://www.cnblogs.com/zouzf/p/4152279.html #include "stdafx.h" #include <string> ...

  10. ODAC(V9.5.15) 学习笔记(一)总论

    一直在使用ODAC做开发,没时间仔细研究一下,目前采用的是3层结构,ODAC+TDataSetProvider+TClientDataSet做数据处理,也没有多大问题.下一步要开发B/S的程序了,打算 ...