• 技术文章 >Java >java教程

    新手小白学如何学JAVA冒泡排序

    醉折花枝作酒筹醉折花枝作酒筹2021-05-07 09:13:19转载828
    本篇文章给大家介绍一下新手小白学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中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    专题推荐:JAVA 冒泡排序
    上一篇:Spring AOP的半注解和全注解模式是什么 下一篇:eclipse新建项目的方法
    Web大前端开发直播班

    相关文章推荐

    • JAVA中的->是什么意思?• Java中enum常见的用法是什么• Java如何获取系统时间• 重点详解Java类和对象• 新手小白如何安装JAVA JDK

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网