Java数组——冒泡排序

冒泡排序是最出名排序算法 之一,总共有八大排序

冒泡排序代码并不复杂,共两层循环,外层冒泡轮数,里层依次比较


算法步骤:

  1. 比较数组中两个相邻元素,如果第一个元素比第二个元素大,交换位置

  2. 每一次比较,都会产生一个最大,或者最小的数字;

  3. 下一轮可以少一次排序

  4. 依次循环,直到结束


代码演示:

java 复制代码
    public static void main(String[] args) {
        int[] a = {1,5,6,98,52,66,91,2};
        int[] sort = sort(a);
        System.out.println(Arrays.toString(sort));  //[98, 91, 66, 52, 6, 5, 2, 1]
    }

    //冒泡排序

    public static int[] sort(int[] array){
        //临时变量
        int c = 0;
        //外层循环,判断我们循环要走多少次
        for (int i = 0; i < array.length-1; i++) {  //-1是为了不让溢出
            //内层循环,比较两个数
            for (int j = 0; j < array.length-1-i; j++) {
                if (array[j+1]>array[j]){
                    c = array[j];
                    array[j] = array[j+1];
                    array[j+1] = c;
                }
            }
        }
        return array;
    }

当然,我们还能进一步优化一下:

java 复制代码
    public static int[] sort(int[] array){
        //临时变量
        int c = 0;
        //外层循环,判断我们循环要走多少次
        for (int i = 0; i < array.length-1; i++) {  //-1是为了不让溢出

            boolean flag = false;  //通过flag标志位减少无意义比较

            //内层循环,比较两个数
            for (int j = 0; j < array.length-1-i; j++) {
                if (array[j+1]>array[j]){
                    c = array[j];
                    array[j] = array[j+1];
                    array[j+1] = c;
                    flag = true;
                }
            }
            if (flag == false){
                break;
            }
        }
        return array;
    }
相关推荐
好吃的肘子1 分钟前
MongoDB 应用实战
大数据·开发语言·数据库·算法·mongodb·全文检索
ghost1434 分钟前
C#学习第23天:面向对象设计模式
开发语言·学习·设计模式·c#
小白学大数据5 分钟前
Scrapy框架下地图爬虫的进度监控与优化策略
开发语言·爬虫·python·scrapy·数据分析
立秋678911 分钟前
用Python绘制梦幻星空
开发语言·python·pygame
可乐加.糖13 分钟前
项目版本管理和Git分支管理方案
java·git·目标跟踪·gitlab·敏捷流程·源代码管理
明月看潮生31 分钟前
青少年编程与数学 02-019 Rust 编程基础 16课题、包、单元包及模块
开发语言·青少年编程·rust·编程与数学
wowocpp31 分钟前
spring boot Controller 和 RestController 的区别
java·spring boot·后端
后青春期的诗go36 分钟前
基于Rust语言的Rocket框架和Sqlx库开发WebAPI项目记录(二)
开发语言·后端·rust·rocket框架
草莓熊Lotso1 小时前
【C语言字符函数和字符串函数(一)】--字符分类函数,字符转换函数,strlen,strcpy,strcat函数的使用和模拟实现
c语言·开发语言·经验分享·笔记·其他
盛夏绽放1 小时前
Python字符串常用内置函数详解
服务器·开发语言·python