冒泡排序和优化

一、冒泡排序

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));
        }
}
相关推荐
朦胧之8 小时前
AI 编程-老项目改造篇
java·前端·后端
kisshyshy13 小时前
🍦 雪糕、食堂、火车厢:三幅漫画吃透栈、队列与链表
javascript·算法
程序猿大帅13 小时前
别再只当调包侠了:用 Spring AI 落地 Function Calling,我被大模型硬生生砸出了三个大坑
java
程序员晓琪14 小时前
约定大于配置:基于 Java 包名自动生成 API 版本路由的最佳实践
java·spring boot·后端
Flittly14 小时前
【AgentScope Java新手村系列】(11)中断与恢复
java·spring boot·spring
众少成多积小致巨14 小时前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
东坡白菜15 小时前
破局全栈:前端开发的Java入门实战记录—JPA(2)
java·后端
猿人谷20 小时前
不只是 CPU 阈值:STAR 如何用 GAT + Transformer 做容器级自动扩缩容?
人工智能·算法
SimonKing21 小时前
艹,维护AI写的代码,我心态崩了......
java·后端·程序员
用户2986985301421 小时前
Java Word 文档样式进阶:段落与文本背景色设置完全指南
java·后端