博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最最最详细、地道的冒泡排序算法揭秘
阅读量:6173 次
发布时间:2019-06-21

本文共 1712 字,大约阅读时间需要 5 分钟。

hot3.png

学过数据结构和算法的人都知道冒泡排序是最经典的排序算法之一,但大部分都只是知道大概意思,而没有从根本上理解冒泡排序的实现原理,因此到实际需要给出代码实现的时候,往往都是google之。鉴于很多公司在技术面试的时候也都会考到这道算法题,下面本文将从根本上详细解释冒泡排序算法的实现机理,作为参考,希望大家以后都能对此游刃有余!本人对冒泡排序的理解用6个字概括起来就是-“浮大泡,沉小泡”,就像水里的鱼呼吸的时候会吐出一连串的气泡,留心观察的人会发现,这个时候,这串气泡里首先浮出来的一定是最大的气泡,再往下就越来越小,这便是本文对冒泡排序字面上的解释。

194848_Y1XB_1258323.jpg195348_VoKs_1258323.jpg

上图右边所示为水中气泡的模拟现象,将其水平放置之后正体现了堆栈内存中一维数组中元素从小到达的排列景象。以下面的一维数组为例。

201840_wlxR_1258323.jpg

分析以上图示,可知,如果一维数组有5个元素,那么需要经历4次外循环才能排序完毕,第一次外循环需要4次内循环,第二次外循环需要3次内循环,第三次需要2次,第四次需要1次内循环,内循环里需要做的就是比较前后元素的大小,如果前面元素比后面元素大则交换。那么总结如下:

    假设一维数组的大小为n,那么冒泡排序需要经历n-1次外循环,第一次外循环需要n-1次内循环,第二次外循环需要n-2次内循环,第三次外循环需要n-3次内循环,......,以此类推,第i次外循环需要n-i次内循环,代码如下:

for(int i=0;i
 a[j+1]){              int temp = a[j];            a[j] = a[j+1];            a[j+1] = temp;          }     }  }

以下给出本程序的完整代码-java版!

public class BubbleSort{    public static void main(String[] args){             int[] a = {5,4,3,2,1};        System.out.println("----------------before all sort:-----------------");        print(a);        bubbleSort(a);        System.out.println("----------------after all sort:------------------");        print(a);    }     public static void bubbleSort(int[] a){        for (int i=0;i
a[j+1]) {                    int temp = a[j];                    a[j] = a[j+1];                    a[j+1] = temp;                }                System.out.println("**********************after inner "+(j+1)+" times sort**********************");                print(a);           }           System.out.println("------------------------after "+(i+1)+" times sort--------------------------");           print(a);        }     }    public static void print(int[] a){        for (int i=0;i

运行结果显示如下:

204158_eJv6_1258323.png

204158_ODJo_1258323.png

转载于:https://my.oschina.net/u/1258323/blog/318326

你可能感兴趣的文章
网络基础5
查看>>
Exchange Supported operating system platforms
查看>>
unity3鼠标点击移动
查看>>
Linux 安装中文包
查看>>
谷物大脑
查看>>
访问控制-禁止php解析、user_agent,PHP相关配置
查看>>
AgileEAS.NET之系统架构
查看>>
python3.5里的正则表达式
查看>>
Exchange server 2013 SP1 客户端会议室邮箱自动回复延迟
查看>>
nginx反向代理缓存服务器构建
查看>>
RHEL6 搭建LVS/DR 负载均衡集群 案例
查看>>
以太坊·Rinkeby 测试网络
查看>>
字符串按规则排序算法
查看>>
MPLS + BGP高级特性
查看>>
plist文件读写操作
查看>>
oracle resetlogs和noresetlogs 创建控制文件区别
查看>>
2013-7-17学习作业练习
查看>>
ZAM 3D入门教程(4):Extrusion编辑器
查看>>
《深入实践Spring Boot》一第2章 在Spring Boot中使用数据库2.1 使用MySQL
查看>>
C++语言基础 例程 字符串类
查看>>