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

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

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

    • 八大排序算法
      • 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

相关文章

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

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socket read timed out的问题

《如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socketreadtimedout的问题》:本文主要介绍解决Druid线程... 目录异常信息触发场景找到版本发布更新的说明从版本更新信息可以看到该默认逻辑已经去除总结异常信息触发场景复

Python struct.unpack() 用法及常见错误详解

《Pythonstruct.unpack()用法及常见错误详解》struct.unpack()是Python中用于将二进制数据(字节序列)解析为Python数据类型的函数,通常与struct.pa... 目录一、函数语法二、格式字符串详解三、使用示例示例 1:解析整数和浮点数示例 2:解析字符串示例 3:解

CentOS 7 YUM源配置错误的解决方法

《CentOS7YUM源配置错误的解决方法》在使用虚拟机安装CentOS7系统时,我们可能会遇到YUM源配置错误的问题,导致无法正常下载软件包,为了解决这个问题,我们可以替换YUM源... 目录一、备份原有的 YUM 源配置文件二、选择并配置新的 YUM 源三、清理旧的缓存并重建新的缓存四、验证 YUM 源

python3 pip终端出现错误解决的方法详解

《python3pip终端出现错误解决的方法详解》这篇文章主要为大家详细介绍了python3pip如果在终端出现错误该如何解决,文中的示例方法讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下... 目录前言一、查看是否已安装pip二、查看是否添加至环境变量1.查看环境变量是http://www.cppcns

python进行while遍历的常见错误解析

《python进行while遍历的常见错误解析》在Python中选择合适的遍历方式需要综合考虑可读性、性能和具体需求,本文就来和大家讲解一下python中while遍历常见错误以及所有遍历方法的优缺点... 目录一、超出数组范围问题分析错误复现解决方法关键区别二、continue使用问题分析正确写法关键点三