Java如何实现冒泡排序?一文了解思路及实现代码
这篇文章给大家分享的是Java如何实现冒泡排序的方法。小编觉得挺实用的,因此分享给大家做个参考,文中有很详细的实现思路及实现代码,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
冒泡排序(Bubble Sort),是计算机科学领域中较简单的一种排序算法。
它重复地走访需要进行排序的元素,依次比较两个相邻的元素,如果元素的顺序(如从大到小、首字母从A到Z)错误就把元素的位置互换。
走访元素是重复进行的,直到没有任何相邻位置上的元素需要交换位置,排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
光看理论可能会有些迷糊,没有关系,接下来我们详细学习一下冒泡排序究竟是如何比较,又是如何排序的~
排序思路
相邻比较,从小到大排序,如果小的就往前换
I代表了从头到尾遍历循环数据
实现冒泡排序
创建类: BubbleSort.java
package cn.tedu.array; import java.util.Arrays; /**本类用来完成冒泡排序*/public class TestBubbleSort { public static void main(String[] args) { //1.创建一个无序的数组 int[] a = { 27,96,73,25,21} ; //2.调用method()完成排序 int[] newA = method(a); System.out.println("排序完毕:"+Arrays.toString(newA)); } public static int[] method(int[] a) { //1.外层循环,控制比较的轮数,假设有n个数,最多比较n-1次 //开始值:1 结束值:= a.length-1 变化:++ //控制的是循环执行的次数,比如5个数,最多比较4轮,= a.length-1,最多取到4,也就是[1,4]4次 for(int i = 1 ; i = a.length-1 ; i++) { System.out.println("第"+i+"轮:"); //2.内层循环:相邻比较+互换位置 for(int j=0; j a.length-i ; j++) { //相邻比较,a[j]代表的就是前一个元素,a[j+1]代表的就是后一个元素 if(a[j] > a[j+1]) { //交换数据 int t = a[j]; a[j] = a[j+1]; a[j+1] = t; //System.out.println("第"+(j+1)+"次比较交换后:"+Arrays.toString(a)); } } System.out.println("第"+i+"轮的结果:"+Arrays.toString(a)); } return a; //把排序好的数组a返回 } }
其实我们还可以对现有的排序做优化:
优化1:前面几轮排序产生的最大值不需要参与后几轮的比较,执行过几轮就会产生几个值不需要参与比较 , i 轮产生 i 个值,所以需要 - i
优化2:我们要设置一个量,这个量用来检测在当前这一轮的相互比较中究竟有没有发生元素的互换位置,如果发生了互换,说明顺序还没排好,flag就改成true,进行下一轮比较,但是如果在当前轮,所有元素都进行了相互比较,并没有互换位置,这就说明顺序已经排好序了,无需下一轮比较,直接return结束方法即可
以上就是关于Java实现冒泡排序的介绍,上述示例具有一定的参考价值,有需要的朋友可以了解看看,希望对大家学习Java实现冒泡排序有帮助,想要了解更多可以继续浏览网络其他相关的文章。
文本转载自PHP中文网
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Java如何实现冒泡排序?一文了解思路及实现代码
本文地址: https://pptw.com/jishu/655249.html