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;
    }
相关推荐
秋饼7 小时前
Spring AI 2.0 结构化输出企业级实战:从 BeanOutputConverter 源码到生产级解析容错
java·ai·技术分享·后端开发
摇滚侠7 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y7 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python
拿本唠嗑AI研究7 小时前
本体工程实战指南:从建模到可维护的完整落地路径
java·人工智能·python·jena·ontology
lambo mercy7 小时前
Day3:结构化输出
java·数据库·oracle
程序员清风8 小时前
最短路径算法:BFS、Dijkstra 与 Floyd
java·算法·宽度优先
jimy18 小时前
c++的 Type Traits (一)
开发语言·c++
智能直播9 小时前
RK3528 V4L2 框架 UVC 接口自动获取 H.264 / MJPEG / YUYV 格式:从内核采集到硬解分发
java·网络·实时音视频·视频编解码·h.264
171320330计算机毕设编程9 小时前
计算机毕业设计 基于YOLO改进算法的车辆特征识别系统设计与实现--lw
java·大数据·python·sql·算法
Web极客码9 小时前
Python Ollama 本地 Agent 入门与订单查询实践
开发语言·jvm·python