Java练习题-用冒泡排序法实现数组排序

news2024/12/22 23:18:03

✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1🏆
📃个人主页:hacker707的csdn博客
🔥系列专栏:Java练习题
💬个人格言:不断的翻越一座又一座的高山,那样的人生才是我想要的。这一马平川,一眼见底的活,我不想要,我的人生,我自己书写,余生很长,请多关照,我的人生,敬请期待💖💖💖

在这里插入图片描述

用冒泡排序法实现数组排序

  • 题目
    • 冒泡排序法
    • 实现思路
    • 具体代码实现
  • 结束语

题目

编写程序,实现对数组{25,24,12,76,128,95,63}的排序。提示:使用冒泡排序法

冒泡排序法

冒泡排序法简单来说就是通过比较相邻元素并进行互换,最大(或最小)的元素逐渐移动到列表的末尾,直到整个数组有序

实现思路

1.创建一个整形数组arr,并初始化数值

int[] arr = {25,24,12,76,128,95,63};

2.定义一个外层循环控制 比较轮数,总共需要比较arr.length-1

for(int i = 0; i < arr.length - 1; i++)

3.定义一个内层循环控制每轮比较的次数,逐个比较相邻元素的大小

for(int j = 0; j < arr.length - 1 - i; j++)

4.如果当前元素比后一个元素大,则交换它们的位置,通过int temp = arr[];arr[j] = arr [j+1];arr[j+1] = temp实现位置交换,循环结束后最大(最小)的元素就被冒泡到数组末尾

if(arr[j] > arr[j+1]){
      int temp = arr[j];
       arr[j] = arr[j+1];
       arr[j+1]=temp;
   }

5.使用增强型for循环for (int j : arr) { System.out.print(j + " "); }遍历排序后的数组并打印每个元素。

for (int j : arr) {
    System.out.print(j + " ");
}

💨扩展:增强型for循环和普通for循环的区别

第一个for-each循环(也称为增强型for循环)更加简洁和易读。它可以直接遍历整个数组,并将每个元素赋值给迭代变量j。对于只需要访问数组元素而无需关心索引的情况,使用for-each循环更加合适。

第二个普通for循环需要手动维护一个索引变量i,并通过数组的长度arr.length来控制循环次数。这种循环方式适用于需要访问数组元素的索引或者需要对数组元素进行修改的情况。

总体而言,选择哪个循环更好用取决于你的具体需求和个人偏好。如果只是需要遍历并打印数组元素,建议使用第一个for-each循环。如果需要操作数组元素的索引或者进行一些复杂的逻辑处理,那么使用第二个普通for循环比较合适。

具体代码实现

public class BubbleSort {
    public static void main(String[] args){
        //创建一个数组
        int[] arr = {25,24,12,76,128,95,63};
        //使用冒泡排序法对数组进行排序
        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]){
                    //创建一个临时变量
                    int temp = arr[j];
                    //交换两个数
                    arr[j] = arr[j+1];
                    //将后一个数赋值给前一个数
                    arr[j+1]=temp;
                }
            }
        }
        //遍历数组
        for (int j : arr) {
            System.out.print(j + " ");
        }
    }
}

结束语

以上就是Java练习题-用冒泡排序法实现数组排序
持续更新Java练习题专栏,敬请期待
专栏地址:Java练习题💕

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1072658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

超详细!Android Termux上如何安装MySQL,内网穿透实现公网远程访问

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备&#xff0c;尽管最初并非设计为服务器&#xff0c;但是随着技术的进步我们可以将Android配置为生产力工具&#xff0c;变成一个随身…

C++游戏后端开发(魔兽世界,MMO,TrinityCore源码拆解) 教程

基于魔兽开源后端框架 TrinityCore 的技术拆解课程 一、TrinityCore CMake项目构建 1.1 CMake的使用 什么是CMake , CMake 的工作流程 CMakeLists.txt的编写规则 静态库生成以及链接 动态库生成以及链接 嵌套CMake 1.2 Windows和Linux下编 译调试环境搭建 cmake和grap…

Android原生实现控件outline方案(API28及以上)

Android控件的Outline效果的实现方式有很多种&#xff0c;这里介绍一下另一种使用Canvas.drawPath()方法来绘制控件轮廓Path路径的实现方案&#xff08;API28及以上&#xff09;。 实现效果&#xff1a; 属性 添加Outline相关属性&#xff0c;主要包括颜色和Stroke宽度&…

桌面动态壁纸

1、将压缩包中解压&#xff0c;选择所需要的壁纸复制到目录 2、解压kugou动态壁纸运行程序&#xff0c;文件选择默认打开文件为animation_desktop_webgl.exe 3、重启电脑生效

【总结】kubernates 插件工具总结

在此记录工作中用到的关于 kubernates 的插件小工具&#xff0c;以防以后忘记 1、能显示 kubernates 所处上下文的插件 kube-ps1 github 地址&#xff1a; https://github.com/jonmosco/kube-ps1 效果 2、能方便切换 kubernates 上下文的插件 kubecm github 地址&#xff1…

Python中跨越多个文件使用全局变量

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 这个琐碎的指南是关于在 Python 中跨多个文件使用全局变量。 但是在进入主题之前&#xff0c;让我们简单地看看全局变量和它们在多个文件中的用途。 &#x1f447; &#x1f447; &#x1f447; 更多精彩机密、教程&#xff…

流程引擎概述及组成

一、流程引擎概述 流程&#xff0c;可以理解为步骤&#xff0c;一个有序的活动或动作&#xff1b; 引擎&#xff0c;可以理解为驱动&#xff0c;是一个程序或者一套系统。 所以&#xff0c;字面意思可以理解为&#xff0c;流程引擎是一套&#xff08;或一个&#xff09;用来…

Java 线程的生命周期

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

笔记38:膨胀卷积/空洞卷积的原理

本地笔记&#xff1a;D:\work_file\DeepLearning_Learning\03_个人笔记\膨胀卷积 a a a a a a a a a a a a a a a

如何为金蝶ERP软件配置自定义域名,并实现公网访问——“cpolar内网穿透”

文章目录 前言1. 保留自定义域名2. 域名解析3. 配置自定义域名4. 关于服务器选择以及域名备案的说明4.1 关于服务器地区的选择&#xff1a;4.2 关于自定义域名备案&#xff1a;4.3 关于域名过白名单&#xff1a; 前言 上篇文章我们讲过如何安装金蝶云星空&#xff0c;实现异地…

JavaScript语法(一)

一、什么是JavaScript 1、DOM 文档对象模型&#xff08;Document Object Model&#xff09;是一个应用编程接口&#xff08;API&#xff09;&#xff0c;用于在HTML中使用扩展的XML&#xff0c;DOM 将整个页面抽象为一组分层节点。HTML 或 XML 页面的每个组成部分都是一种节点…

线程安全问题 --- 死锁

文章目录 线程安全产生线程安全问题的原因上锁synchronized使用方法1. 修饰方法2. 修饰代码块synchronized的可重入性死锁什么是死锁死锁的三个典型情况:死锁的四个必要条件如何破除(避免)死锁线程安全类线程安全 由于多个线程之间是抢占式执行的, 这就给调度执行顺序带来了随…

Redis(三)

文章目录 一、单节点Redis的问题&#xff08;一&#xff09;数据丢失&#xff08;二&#xff09;并发能力问题&#xff08;三&#xff09;存储能力问题&#xff08;四&#xff09;故障恢复问题 二、Redis持久化&#xff08;一&#xff09;RDB1、RDB是什么2、rdb配置3、手动触发…

Java基于SpringBoot的高校招生系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 简介系统设计思路1 数据库设计2 系统整体设计 系统详细设计1系统功能模块2. 管理员功能模块3学生…

时序预测 | MATLAB实现ICEEMDAN-IMPA-LSTM时间序列预测

时序预测 | MATLAB实现ICEEMDAN-IMPA-LSTM时间序列预测 目录 时序预测 | MATLAB实现ICEEMDAN-IMPA-LSTM时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 ICEEMDAN-IMPA-LSTM功率/风速预测 基于改进的自适应经验模态分解改进海洋捕食者算法长短期记忆网络时间序…

MQTT协议入门介绍

前言 物联网曾被认为是继计算机、互联网之后&#xff0c;信息技术行业的第三次浪潮。随着基础通讯设施的不断完善&#xff0c;尤其是 5G 的出现&#xff0c;进一步降低了万物互联的门槛和成本。物联网本身也是 AI 和区块链应用很好的落地场景之一&#xff0c;各大云服务商也在…

【漏洞复现】某 NVR 视频存储管理设备远程命令执行

漏洞描述 NUUO NVR是中国台湾NUUO公司旗下的一款网络视频记录器&#xff0c;该设备存在远程命令执行漏洞&#xff0c;攻击者可利用该漏洞执行任意命令&#xff0c;进而获取服务器的权限。 免责声明 技术文章仅供参考&#xff0c;任何个人和组织使用网络应当遵守宪法法律&am…

简单对比一下 C 与 Go 两种语言

使用一个简单的计数程序将古老的 C 语言与现代 Go 进行比较。 Go 是一种现代编程语言&#xff0c;追溯其历史大部分源自编程语言 C。所以&#xff0c;任何熟悉 C 语言的开发者都可能会觉得 Go 很熟悉。C 程序员使用 Go 编写新程序变得容易&#xff0c;同时避免了 C 编程语言的…

安全典型配置(一)使用ACL限制FTP访问权限案例

【微|信|公|众|号&#xff1a;厦门微思网络】 使用ACL限制FTP访问权限案例 ACL简介 访问控制列表ACL&#xff08;Access Control List&#xff09;是由一条或多条规则组成的集合。所谓规则&#xff0c;是指描述报文匹配条件的判断语句&#xff0c;这些条件可以是报文的源地址…

申请免费 SSL 证书为您的小程序加密通信

在今天的网络环境中&#xff0c;数据安全和隐私保护变得尤为重要。无论是网站还是应用程序&#xff0c;为其提供安全的通信渠道都是至关重要的。对于小程序开发者来说&#xff0c;使用 SSL&#xff08;Secure Sockets Layer&#xff09;证书可以有效地保障用户数据的安全&#…