用 Java 实现一个冒泡排序算法
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。 冒泡排序最好的时间复杂度为 O(n),总的平均时间复杂度为 O(n^2),是一种稳定排序算法。
在编程实现中,一般用二重循环实现,外循环变量设为 i,内循环变量设为 j。外循环重复 n 次,内循环依次重复 n-1, n-2, ……, 1 次。每次进行比较的两个元素都是与内循环 j 有关的,它们可以分别用 a[j] 和 a [j+1] 标识,i 的值依次为 1, 2, ……, n,对于每一个 i,j 的值依次为 1, 2, ……, n-i,例如下面的代码:
for (int i = 0; i < arrys.length; i++) {
for(int j = 0;j < arrys.length-i-1; j++){
if(arrys[j] > arrys[j+1]){ //判断当前数字与后面数字的大小
//把大数放后边
}
}
}
以下是该题目的代码实现:
package com.fhcq.bubblesort; public class BubbleSort { //主方法
public static void main(String[] args) {
int[] arr = { 3, 5, 7, 1, 8, 11, 9}; //定义数组
bubbleSort (arr); //开始排序
} //排序方法
public static void bubbleSort(int[] arrys) {
//定义临时变量 temp
int temp = 0;
//用j为下标,遍历数组
for (int j = 0; j < arrys.length; j++) {
//对于每一个数组元素,从0到还未来排序的最大下标,总是把最大的数字放在后面
for(int k = 0;k < arrys.length-j-1; k++){
if(arrys[k] > arrys[k+1]){ //判断当前数字与后面数字的大小
temp = arrys[k];
arrys[k] = arrys[k+1];
arrys[k+1] = temp; //用temp变量进行换值
}
}
}
bubblePrint(arrys); //打印
}
//打印方法
public static void bubblePrint(int[] before){
for(int i = 0;i < before.length; i++){ //遍历
System.out.print(before[i] + ""); //打印,以空格隔开
}
System.out.println();//换行
}
}
用 Java 实现一个冒泡排序算法的更多相关文章
- 基于Java实现的冒泡排序算法
冒泡排序是一种简单基础的排序算法,相信在大学课堂里老师已经讲过了,现在我基于Java来实现一遍. 简述 冒泡排序正如其关键词一样,杂乱的气泡经过浮动,最后大的气泡飘到了上面而小的气泡在下面,无序的元素 ...
- 用JAVA写一个冒泡排序
一:实现思想: 基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒.即:每当两相邻的数比较后发现它们的排序与排序要 ...
- 用 Java 实现一个快速排序算法
快速排序是排序算法中效率最高的一种,它是利用递归的原理,把数组无限制的分成两个部分,直到所有数据都排好序为止. 快速排序是对冒泡排序的一种改进.它的基本思想是通过一趟排序将要排序的数据分 ...
- 用 Java 实现一个插入排序算法
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法:插入排序法.插入排序的基本操作就是将一个数据插入到已经排好序的有序 ...
- 2用java代码实现冒泡排序算法(转载)
import java.util.Scanner; public class Maopao { public static void main(String[] args) { System.out. ...
- java中关于冒泡排序算法的学习。
在编程语言的学习中,排序算法在学习过程中是必须要掌握的,特别在新手的学习中,我们应该学会这些算法,本篇先介绍冒泡算法. 冒泡排序 设有一组待排序的数据: 3 2 4 5 7 1 我们需要使用冒泡排序来 ...
- 冒泡排序算法 :BubbleSort
java中的经典算法:冒泡排序算法 $. 可以理解成当你静止一杯可乐时,里面的CO2随着你的静止,由于不不易溶于水的性质, 且会以气泡的形式逐渐向上漂浮.越大的气泡上浮速度越快. 冒泡排序算法的原理于 ...
- OC冒泡排序算法
面试的时候很多公司会要求写一个冒泡排序算法,于是用OC写了一个,代码如下所示 需要注意的事项:oc数组只能存放oc对象,因此遍历数组输出的时候,记得通过NSString对象转换成intValue #i ...
- Java中的经典算法之冒泡排序(Bubble Sort)
Java中的经典算法之冒泡排序(Bubble Sort) 神话丿小王子的博客主页 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一 ...
随机推荐
- Ubuntu16.04.2安装Tensorflow
安装aptitude $ sudo apt-get install aptitude 安装python-pip python-dev $ sudo aptitude install python-pi ...
- zkw费用流模板
理论:http://www.cnblogs.com/acha/p/6735037.html #include<cstdio> #include<cstring> #includ ...
- 洛谷P2424/codevs 2606 约数和
http://codevs.cn/problem/2606/ https://luogu.lohu.info/problem/show?pid=2424 题目背景 Smart最近沉迷于对约数的研究中. ...
- [整理]VS2010中如何添加“依赖","库目录","包含目录"
VS2010中如何添加“依赖","库目录","包含目录" 1. 添加编译所需要(依赖)的 lib 文件[解决方案资源管理器]“项目->属性-&g ...
- 网上整理的jQuery插件开发教程
jQuery插件的开发包括两种:一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级别 ...
- input限制
转载,暂未使用,可以借鉴. 出处:http://blog.csdn.net/a13590394462/article/details/73943785
- J - Clairewd’s message HDU - 4300(扩展kmp)
题目链接:https://cn.vjudge.net/contest/276379#problem/J 感觉讲的很好的一篇博客:https://subetter.com/articles/extend ...
- 修复TortoiseGit文件夹和文件图标不显示问题的多种解决办法以及重启之后TortoiseGit图标注册表又不见了的解决办法
一 首先进行第一种尝试 打开 regedit.exe ,准备修改注册表 找到 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ ...
- 一个简单的java jdbc案例
有些时候,配置一个spring+mybatis框架,然后写xml,dao ,service显得特别繁琐. 如果我们只是想查一下数据库,不考虑连接复用也不考虑动态sql,可以用原生的jdbc来实现,方便 ...
- iptables NAT规则【转】
nat表需要的三个链: 1.PREROUTING:可以在这里定义进行目的NAT的规则,因为路由器进行路由时只检查数据包的目的ip地址,所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT; ...