当前位置: 首页 > news >正文

后端开发刷题 | 排序算法--冒泡排序

描述

有一个长度为7的无序数组,按照从小到大的顺序排序后输出。

输入描述:

数组中的数据

输出描述:

数组中数据排序后输出

示例1:

输入:

13 11 9 7 5 3 1

输出:

1 3 5 7 9 11 13

算法思想:

冒泡排序:

排序序列从前向后(从下标较小的元素开始),依次对相邻两个元素的值进行两两比较,若发现逆序则交换,使值较大的元素逐渐从前移向后部。

第一轮排序:

找到了该数组中最大值放在了末端,所以一个元素已经有序,现在第二轮排序,只需要将前面的进行排序。

以此类推:

第三轮排序:

第四轮排序:

第五轮排序:

第六轮排序:

总结:每一轮排序都可以让一个元素在有序的位置上,i个元素进行排序,需要进行i-1轮的排序。

代码展示:

import java.util.Arrays;
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int[] arr = new int[7];for (int i = 0; i < arr.length; i++) {arr[i] = scanner.nextInt();}scanner.close();boolean flag=false;for(int i=0;i<arr.length-1;i++){for(int j=0;j<arr.length-1-i;j++){//进入循环判断flag=true;if(arr[j]>arr[j+1]){int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}//这一轮没有进行排序,说明已经是有序,则终止循环if(!flag){break;}}for (int k = 0; k < arr.length; k++) {System.out.print(arr[k]+" ");}}
}

这里使用了flag来判断是否排序过程中,该数组已经有序,提前结束排序,这样排序效率更高。


http://www.mrgr.cn/news/1201.html

相关文章:

  • 计算机网络——运输层(进程之间的通信、运输层端口,UDP与TCP、TCP详解)
  • DMS:直接可微的网络搜索方法,最快仅需单卡10分钟 | ICML 2024
  • 寻找AC110-220V输入、稳定输出12V、300mA负载并预留500mA用AH8966
  • UDP/TCP --- Socket编程
  • 运维学习————Linux环境下Tomcat的部署
  • react笔记:redux
  • 【Qt】常用控件QLabel
  • 计算机视觉实战详解:从基础到前沿
  • 轻松上手!2024年图片转PDF工具操作指南
  • 【机器学习】深度学习实践
  • 大语言模型微调框架Unsloth:简化模型微调流程,提升模型性能
  • Mojo 集合list的详解及相关说明
  • pycharm2023.1破解
  • 责任链设计模式
  • 【python数据分析08】——Pandas统计分析(读/写不同数据源的数据)
  • 【体检】程序人生之健康检查,全身体检与预防疫苗,五大传染病普筛,基因检测等
  • 手机使用技巧:如何恢复Android手机不见的短信
  • C++--map和set
  • 桶射巡飞无人机技术详解
  • 解析已有架构+文心快码(Baidu Comate)软件架构