noob学算法----冒泡(bubble)排序算法 Java
冒泡算法(bubble sort)
原理:按照数组角标从小到大,将数组元素按逻辑从小到大,相近的两两排序。重复足够多的轮次(轮次不操过数组长度),直至数组元素之间不在变动位置。这样,每一轮基本都会整出一个逻辑最大的数排在数组后面,其位也就不会在动。
如:
int arr[] = { 2, 3, 5, 6, 7, 2, 8, 6, 4, 5 };
第一轮:[2, 3, 5, 6, 2, 7, 6, 4, 5, 8]
第二轮:[2, 3, 5, 2, 6, 6, 4, 5, 7, 8]
第三轮:[2, 3, 2, 5, 6, 4, 5, 6, 7, 8]
第四轮:[2, 2, 3, 5, 4, 5, 6, 6, 7, 8]
第五轮:[2, 2, 3, 4, 5, 5, 6, 6, 7, 8]
第六轮:[2, 2, 3, 4, 5, 5, 6, 6, 7, 8]
第七轮:[2, 2, 3, 4, 5, 5, 6, 6, 7, 8]
第七轮后元素没有可以移动的元素了
其它类型的数组需要重新定义下方法。都差不多就不赘述了
实现方法
1.可以直接通过 java.util包下的Arrays类里的工具直接调用
import java.util.Arrays;
public class bubbleSortTest {//冒泡排序算法 java实现public static void bublleSort(int a[]) {//长度为0不执行if(a.length==0) {return;}for (int i = 0; i <= a.length - 2; i++) {boolean flag = true;//让算法在本就可以很快就排好的数组排序更快for (int j = 0; j < a.length - 1 - i; j++) {int temp = a[j];if (a[j] > a[j + 1]) {a[j] = a[j + 1];a[j + 1] = temp;flag=false;}}if (flag)break;}}//代码验证public static void main(String[] args) {int arr[] = { 2, 3, 5, 6, 7, 2, 8, 6, 4, 5 };bublleSort(arr);//结果为:[2, 2, 3, 4, 5, 5, 6, 6, 7, 8]System.out.print(Arrays.toString(arr));//toString()会以字符串的形式直接输出arr[]}
}
noob学算法----冒泡(bubble)排序算法 Java相关推荐
- C语言实现冒泡排序(bubble排序)算法(附完整源码)
冒泡排序bubble排序算法 冒泡排序(bubble排序)算法的完整源码(定义,实现,main函数测试) 冒泡排序(bubble排序)算法的完整源码(定义,实现,main函数测试) #include ...
- c++ sort 从大到小排序_C语言必学的12个排序算法:堆排序(第7篇)
题外话堆排序比之前的简单选择.冒泡算法.快速排序算法复杂一些,因为用到了树形数据结构,但是本文使用了数组实现完全二叉树,因此也比较简单.C语言初学者,可以简单了解其思想,具体的知识掌握可以参照数据结构 ...
- C语言必学的12个排序算法:基数排序
# 基本思想 基数排序(radix sort),同样时一种非比较的内部排序算法,主要基于多关键字排序的思想进行排序,它将单个关键字按照基数分成"多个关键字"进行排序.例如整数789 ...
- c++ 快速排序_C语言必学的12个排序算法:归并排序(第8篇)
题外话很多童鞋感受算法比较难度,的确,算法其实和C语言本身关系不大,算法是计算机科学家利用丰富的数学和算法设计知识研究出来,如今我们只需拿来主义,学习使用即可,当然这需要一定的努力过程. [C语言必学 ...
- 算法基础:排序算法之冒泡排序
算法基础:排序算法之冒泡排序 实现:数列有序排序 思想:已知一个数列,令数列中相邻的两个元素一一做比较,按照小大的顺序(或从大到小的顺序),如果前一个数比后一个数大(或后一个数比前一个数大),则互换( ...
- 数据结构之排序算法:内部排序算法的应用与比较
排序算法:内部排序算法的应用与比较 思维导图: 比较: 应用: 思维导图: 比较: 应用:
- 冒泡排序算法和选择排序算法比较
冒泡排序算法详细内容见→冒泡排序算法. 选择排序算法详细内容见→选择排序算法. 冒泡排序算法和选择排序算法的区别: 冒泡排序是比较相邻位置的两个数:而选择排序是按顺序比较,找出最大值或者最 ...
- java排序算法总结_排序算法总结及Java实现
1. 整体介绍 分类 排序大的分类可以分为两种,内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.主要需要理解的都是内排序算法: 内排序可以分为 ...
- java 快速排序算法简单_排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序......
先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...
- java常见的排序算法_常见排序算法及Java实现
先上个总图↓: ①.直接插入排序 插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并 ...
最新文章
- Bootstrap4 导航栏元素居右
- macbook所有型号大全_提高MacBook电池寿命的15个技巧
- 网络游戏中用到哪些计算机技术,美术设计中计算机技术的应用论文
- php获取跳转前的地址,PHP获取短链接跳转后的真实地址和响应头信息的方法
- IDEA2019版最新配置SVN及上传教程-超详细图文详解
- VRRP和HSRP在企业网中的应用
- php if多条件_PHP的数据类型
- Leecode刷题热题HOT100(4)——寻找两个正序数组的中位数
- CentOS 6.5使用本地光盘做yum源
- 为用户增加sudo权限(修改sudoers文件)
- 深信服SCSA安全认证工程师
- 黑盒测试的测试方法及其案例
- VS2017安装MFC
- 【ASO优化】手游9大ASO优化方法帮你获得巨量新增!
- Retrofit详解
- 微服务中什么是熔断?什么是服务降级?
- Vscode Remote SSH 远程连接失败过程报错:试图写入的管道不存在
- 小偷和抢劫是被怎么遏制的?
- BAP:PPP 带宽分配协议 BACP:PPP 带宽分配控制协议--网络大典
- 第1章 linux的历史演绎
热门文章
- ACL 2017 录用论文整理(长文)
- 高精度ua级恒流源_高精度恒流源电路图大全(十款高精度恒流源电路设计原理图详解)...
- 启动计算机键盘没反应,电脑键盘个别键没反应怎么办
- 常见的几种IDEA使用技巧
- 工业互联网发展行动计划(2018-2020年)
- elasticsearch实践之代码结构设计
- 农历与公历日期转换(1900年 至 2049年)
- Unity Spine动画如何选定帧数(时间)播放
- 20194307肖江宇Exp-4 恶意代码分析
- Python Turtle绘图[难度2星]:横切的橙子(配色优化——邻近色/反差色)