冒泡排序和优化

一、冒泡排序

java 复制代码
package com.zhk.code.study;


import java.util.Arrays;

public class Bubble {
        /*
        对数组a中的元素进行排序
        */
        public static void sort(Comparable[] a){
                for(int i=a.length-1;i>0;i--){
                        for (int j = 0; j <i; j++) {
                                if (greater(a[j],a[j+1])){
                                        exch(a,j,j+1);
                                }
                        }
                }
        }
        /*
        比较v元素是否大于w元素
        */
        private static boolean greater(Comparable v,Comparable w){
                return v.compareTo(w)>0;
        }
        /*
        数组元素i和j交换位置
        */
        private static void exch(Comparable[] a,int i,int j){
                Comparable t = a[i];
                a[i]=a[j];
                a[j]=t;
        }
        //测试代码
        public static void main(String[] args) {
                Integer[] a = {4, 5, 6, 3, 2, 1};
                Bubble.sort(a);
                System.out.println(Arrays.toString(a));
        }
}

二、优化

第二层循环完毕如果没有更改位置,那么就证明现在顺序是正确的,就不往下面循环了

java 复制代码
package com.zhk.code.study;


import java.util.Arrays;

public class Bubble {
        /*
        对数组a中的元素进行排序
        */
        public static void sort(Comparable[] a){
                Boolean isSkip = true;
                for(int i=a.length-1;i>0;i--){
                        for (int j = 0; j <i; j++) {
                                if (greater(a[j],a[j+1])){
                                        exch(a,j,j+1);
                                        isSkip = false;
                                }

                        }
                        if (isSkip) {
                                break;
                        }
                }
        }
        /*
        比较v元素是否大于w元素
        */
        private static boolean greater(Comparable v,Comparable w){
                return v.compareTo(w)>0;
        }
        /*
        数组元素i和j交换位置
        */
        private static void exch(Comparable[] a,int i,int j){
                Comparable t = a[i];
                a[i]=a[j];
                a[j]=t;
        }
        //测试代码
        public static void main(String[] args) {
                Integer[] a = {1,2,3};
                Bubble.sort(a);
                System.out.println(Arrays.toString(a));
        }
}
相关推荐
SeaDhdhdhdhdh4 小时前
MCP Server 搭建与使用指南
java·ai·agent·mcp
YH55269845 小时前
GPT‑5.6 Sol 原本支持 1M 上下文,Codex 现已放开此前限制,如何看待这次调整?
java·jvm·人工智能·gpt·算法·chatgpt
AI_小站5 小时前
刚面完百度的 Agent 开发岗,我才发现:世界就是个巨大的草台班子
java·开发语言·人工智能·spring·百度·langchain
许彰午6 小时前
03-三种开发模式
java·架构
涟漪海洋6 小时前
创建最新的JDK25镜像,非root环境启动
java
遥感知识服务7 小时前
从局部阈值、双极化到暗地表剔除:NASA OPERA DSWx-S1全球动态水体算法拆解
大数据·人工智能·深度学习·神经网络·算法·机器学习
晚风醉蝶7 小时前
1-13-TimSort
算法
Rain的Java大神之路7 小时前
短信接口被狂刷怎么处理
java·运维·后端·web安全·面试·架构·xss
ZJU_统一阿萨姆7 小时前
【算子开发】算子融合与Softmax_LayerNorm实现
人工智能·算法·语言模型·硬件架构
2602_959960927 小时前
谢飞机面试大厂:Spring Boot、JVM、Redis、Kafka、微服务与音视频搜索场景求生实录
java·jvm·spring boot·redis·面试题