Java冒泡排序的定义与实例代码
冒泡排序
在八大排序中,冒泡排序是最为出名的排序算法之一!
冒泡排序的代码还是相当简单的,两层循环,外层是冒泡轮数,里层是依次比较,这个算法的时间复杂度为O(n2);
冒泡排序的思想:
- 比较数组中相邻的两个元素,如果第一个数比第二个数大,就交换它们的位置
- 每一次比较都会产生一个最大或最小的元素
- 下一次循环就只排序剩下的元素
- 依次循环,直到所有元素排序完成
通过实例理解:
public static void main(String[] args) { int[] a={55,45,33,24,78,65,11}; int[] sort = sorts(a); System.out.println(Arrays.toString(sort)); } public static int[] sorts(int[] array){ int a=0; //外层循环,判断要循环的次数,记录不需要比较的元素的个数; //在内层循环结束后,除去得到的元素,再重新让内层循环排序剩余的元素。 for (int i=0;i<array.length-1;i++){ /** * 内层循环,把每个相邻的元素比较一遍,后一个数大就交换位置,得到一个最小的元素,位于数组的最后。 * j<array.length-1-i的意思是每把外层for循环走一次,内层for循环就得到一个相对最小的元素, * 那么下次循环就不再比较它,所以要—i * if语句是要把最小的元素放到array[j+1],这样数组就会从大到小排列 */ for (int j=0;j<array.length-1-i;j++){ if (array[j+1]>array[j]){ a=array[j]; array[j]=array[j+1]; array[j+1]=a; } } } return array; }
运行结果:
总结
到此这篇关于Java冒泡排序的定义与实例的文章就介绍到这了,更多相关Java冒泡排序的定义与实例内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
java利用冒泡排序对数组进行排序
本文实例讲述了java利用冒泡排序对数组进行排序的方法.分享给大家供大家参考.具体如下: 一.冒泡排序: 利用冒泡排序对数组进行排序 二.基本概念: 依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后.至此第一趟结束,将最大的数放到了最后.在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数
-
java数组排序示例(冒泡排序、快速排序、希尔排序、选择排序)
快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现. 冒泡法是运用遍历数组进行比较,通过不断的比较将最小值或者最大值一个一个的遍历出来. 选择排序法是将数组的第一个数据作为最大或者最小的值,然后通过比较循环,输出有序的数组. 插入排序是选择一个数组中的数据,通过不断的插入比较最后进行排序. 复制代码 代码如下: package com.firewolf.sort; public class MySort { /** * @param args */ public s
-
深入Java冒泡排序与选择排序的区别详解
冒泡排序它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.代码如下: 复制代码 代码如下: public class nums { public static void main(String[] args){ int []nums = {5,4,3,2,1}; for(int i = 0; i < nums.length; i++){
-
java冒泡排序和选择排序示例
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后.至此第一趟结束,将最大的数放到了最后.在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二
-
Java冒泡排序(Bubble Sort)实例讲解
举个例子:int[] array = {2,4,9,7,6,5}; 第一轮2和4进行比较,2<4,位置不变.再4和9进行比较,4<9,位置不变.再9和7进行比较,9>7,9和7的位置互换.再9和6进行比较,9>6,9和6的位置互换.再9和5进行比较,9>5,位置互换.第一轮比较的结果就是2 4 7 6 5 9. 第二轮2和4进行比较,2<4,位置不变.再4和7进行比较,4<7,位置不变.再7和5进行比较,7>6,7和6的位置互换.再7和5进行比较,7>
-
Java中的数组排序方式(快速排序、冒泡排序、选择排序)
1.使用JavaApi文档中的Arrays类中的sort()进行快速排序 复制代码 代码如下: import java.util.Arrays; public class TestOne{ public static void main(String [] args){ int [] array={2,0,1,4,5,8}; Arrays.sort(array);//调用Arrays的静态方法Sort进行排序,升序排列 for(int show:array){ System.out.printl
-
java冒泡排序算法代码
复制代码 代码如下: /** * 原理: * 进行n次循环,每次循环从后往前对相邻两个元素进行比较,小的往前,大的往后 * * 时间复杂度: * 平均情况:O(n^2) * 最好情况:O(n) * 最坏情况:O(n^2) * * 稳定性:稳定 **/public class 冒泡排序 { public int[] bubbleSort(int[] a, int n) { for (int i = 0; i < n; i++) { int flag = 0;
-
Java实现冒泡排序算法及对其的简单优化示例
原理 冒泡排序大概是所有程序员都会用的算法,也是最熟悉的算法之一. 它的思路并不复杂: 设现在要给数组arr[]排序,它有n个元素. 1.如果n=1:显然不用排了.(实际上这个讨论似乎没什么必要) 2.如果n>1: (1)我们从第一个元素开始,把每两个相邻元素进行比较,如果前面的元素比后面的大,那么在最后的结果里面前者肯定排在后面.所以,我们把这两个元素交换.然后进行下两个相邻的元素的比较.如此直到最后一对元素比较完毕,则第一轮排序完成.可以肯定,最后一个元素一定是数组中最大的(因为每次都把相对
-
用java实现冒泡排序算法
冒泡排序的算法分析与改进 交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止. 应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序. 复制代码 代码如下: public class BubbleSort implements SortUtil.Sort{ public void sort(int[] data) { int temp; for(int i=0;i<data.length;i++){ for(int j=data.le
-
Java冒泡排序的定义与实例代码
冒泡排序 在八大排序中,冒泡排序是最为出名的排序算法之一! 冒泡排序的代码还是相当简单的,两层循环,外层是冒泡轮数,里层是依次比较,这个算法的时间复杂度为O(n2): 冒泡排序的思想: 比较数组中相邻的两个元素,如果第一个数比第二个数大,就交换它们的位置 每一次比较都会产生一个最大或最小的元素 下一次循环就只排序剩下的元素 依次循环,直到所有元素排序完成 通过实例理解: public static void main(String[] args) { int[] a={55,45,33,24,7
-
Java实现单链表翻转实例代码
Java实现单链表反转,递归和非递归两种形式 /** * 反转单链表 */ /** * 定义链表 * * @author 16026 * */ class Node { int val; Node next; public Node(int val) { this.val = val; } } public class ReverseList { /** * 反转链表 * * @param head * @return */ public static Node reverseList(Node
-
java 根据坐标截取图片实例代码
java 根据坐标截取图片 实例代码:代码中有不是注释,很好看懂! package com.json.test; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Iterator; import javax.imageio.
-
Java编程几个循环实例代码分享
有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下. 1.循环输出1到100之间所有能被3或能被4整除的数. package com.hz.loop02; /** * 1.循环输出1到100之间所有能被3或能被4整除的数. * @author ztw * */ public class Practice01 { public static void main(String[] args) { for (int i=1;i<=100;i++){ //判断下是否
-
Java编程实现打地鼠文字游戏实例代码
控制台输入数字,与随机数匹配,匹配正确则返回"打中了!" 匹配错误则返回"太遗憾!没打中!" package hitmouse; import java.util.Random; import java.util.Scanner; public class HitMouse { public static void main(String[] args) { // TODO Auto-generated method stub int[] map = new int
-
Java Chaos Game噪声游戏实例代码
[简介] 最近一直在读<深奥的简洁>,里面有一章介绍了几种使用噪声产生分形图的方法,感觉很有意思,于是尝试使用计算机模拟了一下,效果还不错(噪声法比传统迭代法在编程上好实现一些,后来发现这类算法还不少,搜索chaosgame可以找到更多). [Sierpinski三角形的噪声产生法] 在这些噪声游戏中,Sierpinski(谢尔宾斯基)三角形的生成规则可谓是最简单的: 1.在平面上选取三个点,标记为1.2.3,作为大三角形的顶点. 2.选择其中一点,作为"当前点"(比如选择
-
Java编程一道多线程问题实例代码
前面几篇博文基本上总结了一下java并发里的一些内容,这篇博文主要从一个问题入手,看看都能用到前面总结的哪些并发技术去解决. 题目描述: 模拟一个场景:处理16条日志记录,每条日志记录打印时间需要1秒,正常情况下如果将这16条记录去部打完需要16秒,现在为了提高效率,准备开启4个线程去打印,4秒钟打印完,实现这个demo. 先来分析一下这个题目,关于这16条日志记录,我们可以在主线程中产生出来,这没用什么难度,关键是开启4个线程去执行,现在有两种思路:一种是日志的产生和打印日志的线程在逻辑上分开
-
Java实现FTP服务器功能实例代码
FTP(File Transfer Protocol 文件传输协议)是Internet 上用来传送文件的协议.在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Download).FTP是实时联机服务,在使用它之前必须是具有该服务的一个用户(用户名和口令),工作时客户端必须先登录到作为服务器一方的计算机上,用户登录后可以进行文件搜索和文件传送等有关操作,如改变当前工作目录.列文件目录.设置传输参数及传送文件等.使用FTP可以传送所有类型的文件,如文本文件.二进制可执
-
Java执行hadoop的基本操作实例代码
Java执行hadoop的基本操作实例代码 向HDFS上传本地文件 public static void uploadInputFile(String localFile) throws IOException{ Configuration conf = new Configuration(); String hdfsPath = "hdfs://localhost:9000/"; String hdfsInput = "hdfs://localhost:9000/user/
-
java中的 toString()方法实例代码
前言: toString()方法 相信大家都用到过,一般用于以字符串的形式返回对象的相关数据. 最近项目中需要对一个ArrayList<ArrayList<Integer>> datas 形式的集合处理. 处理要求把集合数据转换成字符串形式,格式为 :子集合1数据+"#"+子集合2数据+"#"+....+子集合n数据. 举例: 集合数据 :[[1,2,3],[2,3,5]] 要求转成为 "[1,2,3]#[2,3,5]"
随机推荐
- 实现android应用程序自动化测试的批处理脚本
- python编写爬虫小程序
- 详解angularJS+Ionic移动端图片上传的解决办法
- 使用js实现关闭js弹出层的窗口
- 不要再喊“谁给我一个身份证号码验证的代码”了,脚本之家站长提供了
- java读取http请求中的body实例代码
- Mybatis中#{}和${}传参的区别及#和$的区别小结
- .net出现80080005错误的解决办法分享
- JS实现文字链接感应鼠标淡入淡出改变颜色的方法
- javascript table排序 这个更简单了,不用改变现在的表格结构
- ThinkPHP3.1新特性之G方法的使用
- asp空间判断jmail组件是否安装或支持的代码
- 学习JavaScript的最佳方法分享
- mysql 5.7.13 winx64安装配置方法图文教程(win10)
- Mysql5.7中JSON操作函数使用说明
- jquery 面包屑导航 具体实现
- Python自动登录126邮箱的方法
- 深入分析SQL Server 存储过程
- javascript 函数使用说明
- 详解javascript事件冒泡