冒泡排序-编程思维

冒泡排序

图解

代码实现

package com.wiselee.sort;

import java.util.Arrays;

/**
 * @PROJECT_NAME: DataStruct
 * @DESCRIPTION:
 * @USER: 28416
 * @DATE: 2022/12/11 13:47
 * 冒泡排序
 */
public class BubbleSort {
    public static void main(String[] args) {
        int arr[] = {3,9,-1,10,-2};
        //为了容量理解,我们把冒泡排序的演变过程,给大家演示
        //第一趟排序,就是将最大的数排在最后
        int temp = 0;//临时变量
        for (int j = 0; j <arr.length-1 ; j++) {
            for (int i = 0; i < arr.length -1 -j; i++) {
                    //如果前面的数比后面的数大,就交换
                    if (arr[i] > arr[i+1]){
                        temp = arr[i];
                        arr[i] = arr[i+1];
                        arr[i+1] = temp;
                    }
            }
            System.out.println("第"+(j+1) +"一趟排序后的数组");
            System.out.println(Arrays.toString(arr));
        }
    }
}

测试性能

package com.wiselee.sort;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

/**
 * @PROJECT_NAME: DataStruct
 * @DESCRIPTION:
 * @USER: 28416
 * @DATE: 2022/12/11 14:06
 */
public class bubble {
    public static void main(String[] args) {
        //测试冒泡排序o(n^2)
        //排序时间
        int[] arr = new int[80000];
        for (int i = 0; i < 80000; i++) {
            arr[i] = (int)(Math.random()*8000000);
        }
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyy-mm-dd hh:mm:ss");
        String format = simpleDateFormat.format(date);
        System.out.println("排序前的时间是"+format);
        BubbleSort(arr);
        Date date1 = new Date();
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyy-mm-dd hh:mm:ss");
        String format1 = simpleDateFormat1.format(date1);
        System.out.println("排序后的时间是"+format1);
        //排序前的时间是2022-13-11 02:13:59
        //排序后的时间是2022-14-11 02:14:13
    }
    private  static  void BubbleSort(int [] arr){
        int temp = 0;//临时变量
        boolean flag = false;//表示是否进行排序
        for (int j = 0; j <arr.length-1 ; j++) {
            for (int i = 0; i < arr.length -1 -j; i++) {
                //如果前面的数比后面的数大,就交换
                if (arr[i] > arr[i+1]){
                    flag = true;
                    temp = arr[i];
                    arr[i] = arr[i+1];
                    arr[i+1] = temp;
                }
            }
//            System.out.println("第"+(j+1) +"一趟排序后的数组");
//            System.out.println(Arrays.toString(arr));
            if (!flag){
                break;
            }else {
                flag = false;
            }
        }
    }
}

版权声明:本文版权归作者所有,遵循 CC 4.0 BY-SA 许可协议, 转载请注明原文链接
https://www.cnblogs.com/wiseleer/p/16973687.html

git从入门到实战-编程思维

Git从入门到实战 一、Git概述 1.1、Git简介 Git是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。Git仓库来存储和管理这些文件,Git仓库分为两种: 本地仓库:开发人员自己电脑上的Git仓库 远程仓库:远程服务器上的Git仓库 commit:提交,将本地仓库文件和版本信息保存到本

juc-编程思维

目录JUC概述Lock接口线程间通信集合的线程安全锁的种类Callable接口JUC实用类读写锁阻塞队列线程池Fork/Join框架CompletableFuture异步回调 JUC概述 指的是java.util.concurrent包,处理并发编程的工具包,jdk1.5开始 进程:系统进行资源分配的基本单位,一个正在

教你几个 java 编程中的奇技淫巧-编程思维

枯燥的编程中总得有些乐趣,今天我们不谈论那些高深的技能,教你几个在编程中的奇技淫巧,说不定在某些时候还能炫耀一番呢。 1、找到最大值和最小值 不使用 if else switch 和三元运算符,在给定的三元组中找到最大值和最小值:比如给定 3,14,8,在不使用 if else switch 和三元运算符的情况下找到最

架构高可用之限流-抽刀断水水更流-编程思维

上图中是一个水坝泄洪的图,那么,对于软件系统,如何使用最方便的可编程的方式增加服务限流能力呢? 下面我结合一个常规的springCloud项目实践了一把,希望他山之石可以攻玉。 背景 简单使用jmeter,压20个并发,访问 列表查询接口 /worksheet/findInfo, 对应的服务崩溃。【apprun,c

java中的注解可以继承吗?-编程思维

前言 注解想必大家都用过,也叫元数据,是一种代码级别的注释,可以对类或者方法等元素做标记说明,比如Spring框架中的@Service,@Component等。那么今天我想问大家的是类被继承了,注解能否继承呢?可能会和大家想的不一样,感兴趣的可以往下看。 简单注解继承演示 我们不妨来验证下注解的继承。 自定义一个注解

关于.net中迭代器的实现以及集合扩展方法的理解_jn-shao-编程思维

  在C#中所有的数据结构类型都实现IEnumerable或IEnumerable<T>接口(实现迭代器模式),可以实现对集合遍历(集合元素顺序访问)。换句话可以这么说,只要实现上面这两个接口的类都是集合类,都能够进行遍历。工作中用过很多扩展方法对泛型集合(IEnumerable<T>)元素进行

寡人的难题-编程思维

算法与数据结构实验题 10.23 寡人的难题 题目内容 ★实验任务 寡人心系天下为国为民,想要在历史中留下点痕迹,就必须要让国家强盛起来,正所谓想致富先修路,寡人觉得去修路,那些吃干饭的大臣给了寡人很多条要修的道路,奈何国库空虚,寡人只能选择其中一些道路,把重点城市连接在一起,并且这些道路的花费要最少,寡人决定让你来接

分智慧果-编程思维

算法与数据结构实验题 8.19 分智慧果 题目内容 ★实验任务 老师准备把一筐智慧果分给班上的同学,第i个同学(从1开始编号)分到 \(a_i\) 个智慧果。Bonez (编号为1)是个自私的人,如果他的智慧果数不是班上最多的(即存在某位同学的智慧果数大于他的智慧果数),他会悄悄把别的同学的智慧果放进自己的那堆里。请问

mysql学习笔记2-编程思维

MySQL学习笔记2           导入sql文件 mysql导入sql文件(命令行方式) 1. 打开数据库命令行窗口;输入密码登录数据库; 2. 查看所有数据库show databases;,并选择要添加数据的数据库 use mydatabase;; 3. 查看sql所在文件路径,将路径中的\全部更