冒泡排序和优化

一、冒泡排序

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));
        }
}
相关推荐
Miraitowa_cheems几秒前
LeetCode算法日记 - Day 101: 最长公共子序列
数据结构·算法·leetcode·深度优先·动态规划
DuHz6 分钟前
基于信号分解的FMCW雷达相互干扰抑制——论文阅读
论文阅读·算法·汽车·信息与通信·毫米波雷达
q***57507 分钟前
Spring Boot(七):Swagger 接口文档
java·spring boot·后端
徐行tag28 分钟前
RLS(递归最小二乘)算法详解
人工智能·算法·机器学习
南方的狮子先生1 小时前
【C++】C++文件读写
java·开发语言·数据结构·c++·算法·1024程序员节
Alex艾力的IT数字空间1 小时前
完整事务性能瓶颈分析案例:支付系统事务雪崩优化
开发语言·数据结构·数据库·分布式·算法·中间件·php
bemyrunningdog1 小时前
IntelliJ IDEA导出WAR包全指南
java·ide·intellij-idea
玖剹2 小时前
二叉树递归题目(一)
c语言·c++·算法·leetcode
虫师c2 小时前
List vs Set:深入剖析Java两大集合的核心区别与实战应用
java·数据结构·list·set·java集合
emiya_saber2 小时前
Linux 硬盘分区管理
java·linux·网络