博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序算法(一) 冒泡排序
阅读量:6322 次
发布时间:2019-06-22

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

hot3.png

最近想着怎么也要弄点东西来开个源什么的,顺便也梳理一下工作以来的一些知识点。就从算法开始,最常使用的就是各类排序算法了。

第一节就是排序算法了。

冒泡排序

原理

这是学习java以来最早接触的有名字的算法了。冒泡的精髓在于遍历取出最大或最小的数。

如下面示例代码中是从小到大排序(要从大到小修改if比较条件即可<改为>),具体操作就是比较相邻两个数字,满足条件即进行交换。一路交换下去就能出现最大在右边了,再循环自然大的都在右边了。

时间复杂度

如果n个数进行排序,外层循环进行n-1次循环,内层循环进行次数为n-1+n-2+...+1,即n*(n-1)/2=n2-n/2≈n2,时间复杂度O(n2)。

示例代码

整数排序

public static void sort(int[] data){    int temp = 0;    for(int i=data.length-1;i>0;i--){	for(int j=0;j

浮点数排序和整数排序一样

public static void sort(double[] data){    double temp = 0;    for(int i=data.length-1;i>0;i--){	for(int j=0;j

推而广之,一切能进行比较的都可以用冒泡排序,下面再来一发String字符串排序

public static void sort(String[] data){    String temp;    for(int i=data.length-1;i>0;i--){	for(int j=0;j
0){ temp = data[j]; data[j] = data[j+1]; data[j+1] = temp;     } }    }}

测试数据测试

String[] data = {"abc","bbc","bbb","bad","abb","abbc"};

结果如下

abb abbc abc bad bbb bbc

最后来个总结的使用代码,当然基础类型不能用这个来操作

public class BubbleSort {		public static 
> void sort(T[] data){ T temp; for(int i=data.length-1;i>0;i--){ for(int j=0;j
0){ temp = data[j]; data[j] = data[j+1]; data[j+1] = temp; } } } } }

适用环境

冒泡算法相对于桶排序可以说是用时间换取空间的算法,另外还有快速排序法(可看做变种冒泡排序)完全可以用来替代传统的冒泡排序,所以适用性其实不多,可能就用于算法研究吧。

转载于:https://my.oschina.net/daidetian/blog/478359

你可能感兴趣的文章
ASP.NET MVC流程解说
查看>>
Cocos2D-X2.2.3学习笔记12(瞬间动作)
查看>>
LPC43XX JTAG Scan Chain
查看>>
web盲区(DNS,http)网站术语分析
查看>>
ZIP 算法详解 (转!)
查看>>
日月如梭,玩转JavaScript日期
查看>>
Android:BLE智能硬件开发详解
查看>>
C#语法造成的小问题(编译原理知识)
查看>>
oc 协议
查看>>
PowerShell 自动化管理 AWS (1) - 初始化连接
查看>>
什么是微服务
查看>>
CNN 那么多的网络有什么区别吗?看这里了解 CNN 的发展历程
查看>>
多云中如何共享责任模式
查看>>
Adenium约旦57MW太阳能光伏项目投产
查看>>
《Servlet和JSP学习指南》一3.6 动作
查看>>
物联网市场FD-SOI制程会取代FinFET吗?
查看>>
《VMware、Citrix和Microsoft虚拟化技术详解与应用实践》一2.2 ESXi简介
查看>>
CSS3中linear-gradient实现百分比进度条
查看>>
Java设计模式精讲
查看>>
数据库索引为什么用B+树实现?
查看>>