冒泡排序
时间:2020-06-30
本文章向大家介绍
冒泡排序
,主要包括
冒泡排序
使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
冒泡排序
冒泡排序类似于泡泡一样从底层逐次上升到高层的排序过程,每次从数组的第一个元素开始,按(第1个,第2个),(第2个,第3个),(第3个,第4个)...的过程进行比较,每次都取最大的值放置到后面的位置,那么最后得到的值就一定是数组中的最大值,然后将该值排除在外,然后在剩余的数组元素中继续进行上述过程,直至只剩下第一个元素(一定是最小的)。
假定初始数组为{4,2,3,1}
第一轮冒泡排序之后得到{2,3,1,4},以下是详细的比较过程:
第二轮冒泡排序之后得到{2,1,3,4},以下是详细的比较过程:
第三轮冒泡排序之后得到{1,2,3,4},以下是详细的比较过程:
第四轮冒泡排序只剩第一个元素值,该值一定是最小值,所以可以得到最终结果为{1,2,3,4}
对应的算法代码为:
static void Bubble(int[] arr) {
for (int i = 0; i < arr.length; i++) {
int range = arr.length - i;
for (int j = 0; j < range - 1; j++) {
if (arr[j] > arr[j + 1]) {
Utils.swap(arr, j, j + 1);
}
}
}
}
测试排序结果
通过对数器的方式进行排序结果的验证
//测试代码
public static void main(String[] args) {
int size = 15;
int[] arr1 = Utils.generateRandomArray(size, 100);
int[] arr2 = new int[size];
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
System.out.println("原数组:\t\t\t" + Arrays.toString(arr1));
Arrays.sort(arr1);
System.out.println("系统方法排序后:\t" + Arrays.toString(arr1));
Bubble(arr2);
System.out.println("冒泡排序排序后:\t" + Arrays.toString(arr2));
}
原数组: [46, 54, 58, 98, 25, 86, 19, 98, 72, 16, 40, 93, 33, 82, 29]
系统方法排序后: [16, 19, 25, 29, 33, 40, 46, 54, 58, 72, 82, 86, 93, 98, 98]
冒泡排序排序后: [16, 19, 25, 29, 33, 40, 46, 54, 58, 72, 82, 86, 93, 98, 98]
如果对你有帮助,点个赞,或者打个赏吧,嘿嘿
整理不易,请尊重博主的劳动成果
原文地址:https://www.cnblogs.com/Mango-Tree/p/13213509.html
- 如何才能准确测量 APP 的功耗?
- 可用性更高:设计优秀的MySQL和Percona XtraDB集群
- 如何使用scikit-learn在Python中生成测试数据集
- OpenStack Neutron之持续测试
- 干货丨 用 Python 进行股票分析
- 小故事:架构师需要做什么?
- 浅谈用Python计算文本BLEU分数
- Fourinone如何实现并行计算和数据库引擎
- 在Python中用一个长短期记忆网络来演示记忆
- CDA数据分析师学习之路第3期 | Spark RDD的转换操作举例
- 通过Temboo实现从Arduino获取雅虎天气信息
- 自动化模式中的MySQL
- 通过Pandas实现快速别致的数据分析
- R语言中的非线性分类
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- R语言进阶之主成分分析
- 二胖写参数校验的坎坷之路
- 图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正
- R语言时间序列数据指数平滑法分析交互式动态可视化
- R语言进阶之图形的合并
- R语言广义线性模型索赔频率预测:过度分散、风险暴露数和树状图可视化
- 还在使用Future轮询获取结果吗?CompletionService快来了解下。
- R语言通过伽玛与对数正态分布假设下的广义线性模型对大额索赔进行评估预测
- R语言精算学:使用链梯法Chain Ladder和泊松定律模拟和预测未来赔款数据
- 微服务[学成在线] day19:分布式事务
- 微服务[学成在线] day20:项目部署与持续集成(DevOps)
- R语言中回归模型预测的不同类型置信区间应用比较分析
- R语言进阶之坐标轴和文本
- R语言广义线性模型(GLM)广义相加模型(GAM):多元平滑回归分析保险投资风险敞口
- 面试高频题:springBoot自动装配的原理你能说出来吗?