死磕数据结构与算法(排序)--冒泡排序。才疏学浅,如有错误,及时指正

本文主要是介绍死磕数据结构与算法(排序)--冒泡排序。才疏学浅,如有错误,及时指正,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

死磕数据结构与算法(排序)--冒泡排序。才疏学浅,如有错误,及时指正

    • 八大排序算法
      • 1. [冒泡排序算法]()
      • 2. [选择排序算法]()
      • 3. [插入排序算法]()
      • 4. [希尔排序算法]()
      • 5. [快速排序算法](https://blog.csdn.net/qq_41497756/article/details/108815762)
      • 6. [归并排序算法]()
      • 7. [技术排序算法]()
      • 8. [堆排序算法]()
    • 1. 思路:
    • 2. 图解过程
    • 3. 代码

八大排序算法

1. 冒泡排序算法

2. 选择排序算法

3. 插入排序算法

4. 希尔排序算法

5. 快速排序算法

6. 归并排序算法

7. 技术排序算法

8. 堆排序算法

1. 思路:

把数组中的每个元素与它后一个元素进行比较,如果前一个数大于后一个数,则对其进行交换。每一轮过后,数组中的最后一个数就是数组中的最大值。
使用双层循环实现:外层循环控制比较的轮数,总轮数为数组的长度-1。因为最后一轮时,最后一个数已经是最小值了,不用再和其它的数组元素进行比较。
内存循环控制每一轮比较的次数,次数为arr.length-1-i。

2. 图解过程

在这里插入图片描述

3. 代码

package sort;import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;public class BubbleSort {public static void main(String[] args) {int arr[] = {3, 9, -1, 10, -2};//测试一下冒泡排序的速度O(n^2),给80000个数据,测试//创建要给80000个的随机的数组//int[] arr = new int[80000];/*for (int i = 0; i < 5; i++) {arr[i] = (int)(Math.random()*80000);}*/Date date1 = new Date();SimpleDateFormat simpleDateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );String date1Str = simpleDateFormat.format( date1 );System.out.println("排序前:");System.out.println( Arrays.toString(arr));bubbleSort( arr );System.out.println( Arrays.toString(arr));}public static void bubbleSort(int arr[]){int temp;boolean flag = false;for (int i = 0; i < arr.length-1; i++) {for (int j = 0; j < arr.length-1-i; j++) {if(arr[j] > arr[j+1]){flag = true;temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}if(!flag){//在一趟排序中,一次交换都没有发生过,break;}else{flag = false;   //重置flag,进行下次判断}}}
}

这篇关于死磕数据结构与算法(排序)--冒泡排序。才疏学浅,如有错误,及时指正的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/438595

相关文章

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

SpringBoot3匹配Mybatis3的错误与解决方案

《SpringBoot3匹配Mybatis3的错误与解决方案》文章指出SpringBoot3与MyBatis3兼容性问题,因未更新MyBatis-Plus依赖至SpringBoot3专用坐标,导致类冲... 目录SpringBoot3匹配MyBATis3的错误与解决mybatis在SpringBoot3如果

redis数据结构之String详解

《redis数据结构之String详解》Redis以String为基础类型,因C字符串效率低、非二进制安全等问题,采用SDS动态字符串实现高效存储,通过RedisObject封装,支持多种编码方式(如... 目录一、为什么Redis选String作为基础类型?二、SDS底层数据结构三、RedisObject

C++归并排序代码实现示例代码

《C++归并排序代码实现示例代码》归并排序将待排序数组分成两个子数组,分别对这两个子数组进行排序,然后将排序好的子数组合并,得到排序后的数组,:本文主要介绍C++归并排序代码实现的相关资料,需要的... 目录1 算法核心思想2 代码实现3 算法时间复杂度1 算法核心思想归并排序是一种高效的排序方式,需要用

nginx配置错误日志的实现步骤

《nginx配置错误日志的实现步骤》配置nginx代理过程中,如果出现错误,需要看日志,可以把nginx日志配置出来,以便快速定位日志问题,下面就来介绍一下nginx配置错误日志的实现步骤,感兴趣的可... 目录前言nginx配置错误日志总结前言在配置nginx代理过程中,如果出现错误,需要看日志,可以把

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam