冒泡排序的优化

简介: 冒泡排序的优化

冒泡排序的优化


这下面就是我自己的理解冒泡排序的小优化吧

package cn.itcast.algorithm.suanFa;
import java.util.Arrays;
/**
 * 冒泡排序的优化
 */
public class MainS12 {
    public static void main(String[] args) {
        int[] a = {3, 1, 5, 4, 6, 9, 8, 7, 2};
//        int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        int n = a.length-1;
        while(true) {
            int last = 0;   //表示最后一次交换索引位置
            boolean swapped = false;   //判断是否发生交换
            //a.length - 1 - j减少不必要的比较次数
            for (int i = 0; i < n; i++) {
                System.out.println("比较了"+ (i+1)+ "次");
                if (a[i] > a[i + 1]) {
                    int temp = a[i];
                    a[i] = a[i+1];
                    a[i+1] = temp;
                    swapped = true;
                    last = i;
                }
            }
            n = last;
            /*
            如果最后一次的索引位置为0则说明要交换的次数为0,
            证明已经排序好了,不需要在进行比较了,退出该循环
             */
            if (n == 0){
                break;
            }
            System.out.println("-------------------");
            //这里是考虑到如果原本就是有序的,即没有发生交换,就不用在进行不必要的比较了
            if (!swapped){
                break;
            }
        }
        System.out.println("冒泡排序之后:" + Arrays.toString(a));
    }
}
相关文章
|
固态存储 NoSQL Go
使用 cProfile 和火焰图调优 Python 程序性能(下)
使用 cProfile 和火焰图调优 Python 程序性能
456 0
|
6月前
|
XML 前端开发 Java
SpringBoot实现文件上传下载功能
本文介绍了如何使用SpringBoot实现文件上传与下载功能,涵盖配置和代码实现。包括Maven依赖配置(如`spring-boot-starter-web`和`spring-boot-starter-thymeleaf`)、前端HTML页面设计、WebConfig路径映射配置、YAML文件路径设置,以及核心的文件上传(通过`MultipartFile`处理)和下载(利用`ResponseEntity`返回文件流)功能的Java代码实现。文章由Colorful_WP撰写,内容详实,适合开发者学习参考。
547 0
|
Java
Java代码如何打造抽奖系统
Java代码如何打造抽奖系统
438 0
|
计算机视觉
OpenCV(二十八):连通域分割
OpenCV(二十八):连通域分割
679 0
|
XML 前端开发 Java
【SpringMVC】 一文掌握 》》》 @RequestMapping注解
【SpringMVC】 一文掌握 》》》 @RequestMapping注解
131 1
|
算法 芯片
通过概率整形技术对64QAM进行星座图整形,并输出GMI指标
通过概率整形技术对64QAM进行星座图整形,并输出GMI指标
560 0
通过概率整形技术对64QAM进行星座图整形,并输出GMI指标
|
消息中间件 缓存 运维
“解密数据隔离方案,让SaaS应用开发更轻松”技术分享
相信有不少朋友都已经了解到SaaS多租户模式,帮助企业选择合适的SaaS系统匹配企业的客户和业务特点。如:独享资源模式、全共享模式、数据层共享模式等。此时,我们往往会遇到不同租户间的数据隔离问题,如何正确的进行数据路由,才能保证租户的数据隔离。在SaaS应用开发时应用层和数据层的租户路由设计以及实现方面,我们会遇到几种情况:当租户独享应用层和数据层时,这个时候租户的数据是天然隔离的,不会被其他租户影响,此时是不需要路由的;当多个租户涉及到应用层和数据层的资源共享的时候,就需要对租户的数据进行隔离,不管是应用层共享或者数据层共享,还是数据层和应用层都存在共享,正确的数据路由才能保证租户隔离。
1220 0
“解密数据隔离方案,让SaaS应用开发更轻松”技术分享
|
JSON 弹性计算 前端开发
如何规范 RESTful API 的业务错误处理
如何规范 RESTful API 的业务错误处理
1885 0
|
存储 JavaScript 安全
深入探索编译插桩(一.JVM原理解析)
作为Android开发者,日常写java,是否想过,玩玩class文件,直接对class文件的字节码下手,我们可以使用class字节码做很多有趣的事情:
|
存储 NoSQL Java