Java从入门到精通-数组(二)

news2024/11/29 10:52:28

4.数组的基本操作

数组的基本操作包括遍历数组、填充替换数组元素、对数组进行排序、复制数组以及查询数组中的元素。

• 4.1 遍历数组

遍历数组是访问数组中所有元素的过程,通常使用循环完成。

使用 for 循环遍历数组:
int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) {
    System.out.println(numbers[i]);
}
使用增强型 for-each 循环遍历数组:
int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
    System.out.println(num);
}

• 4.2 填充替换数组元素

可以通过循环来填充和替换数组中的元素。

int[] numbers = new int[5];
for (int i = 0; i < numbers.length; i++) {
    numbers[i] = i + 1; // 填充数组元素
}

• 4.3 对数组进行排序

Java提供了多种排序算法来对数组进行排序,例如冒泡排序、选择排序和快速排序。以下是一个使用Arrays类的示例来对数组进行排序:

int[] numbers = {5, 2, 9, 1, 5};
Arrays.sort(numbers); // 对数组进行升序排序

• 4.4 复制数组

可以使用不同的方法来复制一个数组到另一个数组。以下是使用System.arraycopy的示例:

int[] sourceArray = {1, 2, 3};
int[] targetArray = new int[sourceArray.length];
System.arraycopy(sourceArray, 0, targetArray, 0, sourceArray.length);

• 4.5查询数组

可以使用循环遍历数组来查找特定元素,或者使用搜索算法来查找元素的位置。以下是一个线性搜索的示例:

int[] numbers = {10, 20, 30, 40, 50};
int target = 30;
int index = -1;

for (int i = 0; i < numbers.length; i++) {
    if (numbers[i] == target) {
        index = i; // 找到目标元素的索引
        break;
    }
}

if (index != -1) {
    System.out.println("目标元素 " + target + " 在索引 " + index + " 处找到。");
} else {
    System.out.println("目标元素 " + target + " 未找到。");
}

5.数组排列算法

数组排列算法是一种用于按照特定顺序重新排列数组元素的算法。在Java中,有多种排序算法可供选择,每种算法都有其优点和适用场景。

• 5.1 冒泡排序

冒泡排序是一种基本的排序算法,它重复地遍历数组,比较相邻的两个元素,并根据需要交换它们,直到整个数组有序。冒泡排序适用于小型数据集。

public static void bubbleSort(int[] arr) {
    int n = arr.length;
    boolean swapped;
    do {
        swapped = false;
        for (int i = 0; i < n - 1; i++) {
            if (arr[i] > arr[i + 1]) {
                // 交换 arr[i] 和 arr[i+1] 的位置
                int temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
                swapped = true;
            }
        }
    } while (swapped);
}

• 5.2 直接选择排序

直接选择排序是一种简单的排序算法,它在未排序的部分中选择最小(或最大)的元素,并将其放在已排序部分的末尾。直接选择排序适用于小型数据集。

public static void selectionSort(int[] arr) {
    int n = arr.length;
    for (int i = 0; i < n - 1; i++) {
        int minIndex = i;
        for (int j = i + 1; j < n; j++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;
            }
        }
        // 交换 arr[i] 和 arr[minIndex] 的位置
        int temp = arr[i];
        arr[i] = arr[minIndex];
        arr[minIndex] = temp;
    }
}

• 5.3 反转排序

反转排序是一种简单的排序算法,它将数组元素的顺序反转,即将第一个元素与最后一个元素交换,第二个元素与倒数第二个元素交换,以此类推。

public static void reverseSort(int[] arr) {
    int n = arr.length;
    for (int i = 0; i < n / 2; i++) {
        // 交换 arr[i] 和 arr[n-i-1] 的位置
        int temp = arr[i];
        arr[i] = arr[n - i - 1];
        arr[n - i - 1] = temp;
    }
}

6.实践与练习

• 6.1. 数组概述

  • 练习1: 创建一个整数数组,存储您喜欢的5个数字,并编写代码打印出这些数字。

• 2. 一维数组

  • 练习2: 创建一个字符串数组,包含一些水果的名称,然后使用循环遍历并打印数组中的水果名称。
  • 练习3: 编写一个程序,接受用户输入的一组数字,然后计算它们的平均值。

• 3. 二维数组

  • 练习4: 创建一个二维整数数组来表示一个九宫格数独游戏的初始状态,并编写代码打印出数独的初始状态。
  • 练习5: 编写一个程序,生成一个3x3的随机迷宫地图,其中包括起点、终点和墙壁。

• 4. 数组的基本操作

  • 练习6: 编写一个程序,接受用户输入的一组数字,并查找其中的最大值和最小值。
  • 练习7: 创建两个整数数组,分别表示两个向量的坐标,然后编写代码计算这两个向量的点积(内积)。

• 5. 数组排列算法

  • 练习8: 使用冒泡排序或选择排序对一个整数数组进行升序排列,并打印排序后的数组。
  • 练习9: 编写一个程序,生成一个包含10个随机整数的数组,并使用快速排序算法对其进行排序。

• 6. 综合实践

  • 练习10: 创建一个简单的任务管理程序,使用数组来存储任务的描述和状态(未完成/已完成),并提供选项来添加、查看和标记任务的状态。

(以上是十个小问题,下次文章回答)

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

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

相关文章

vue 部署到本机IIS 部署 SPA 应用

安装 URL Rewrite Works With: IIS 7, IIS 7.5, IIS 8, IIS 8.5, IIS 10 URL Rewrite : The Official Microsoft IIS Site 目前公司的 Web 项目是 SPA 应用&#xff0c;采用前后端分离开发&#xff0c;所以有时也会倒腾 Vue 框架。 在 Devops 实践中&#xff0c;容器部署成…

C++11新特性④ | 模板类std::function和标准库函数std::bind

目录 1、引言 2、std::function函数模板类 3、std::bind标准库函数 4、std::bind和std::function配合使用 VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&#xff09;https://blog.csdn.net/chenlycly/article/details/12427258…

Kafka集群与消息可靠性

Kafka集群搭建实战 使用两台Linux服务器&#xff1a;一台192.68.10.7 一台192.168.10.8 192.68.10.7 的配置信息修改 192.168.10.8的配置信息修改 Kafka集群原理 成员关系与控制器 控制器其实就是一个broker, 只不过它除了具有一般 broker的功能之外, 还负责分区首领的选举…

如何优化网站SEO(提高排名和流量的3个小知识)

百度百科SEO简介&#xff1a;搜索引擎优化&#xff08;SearchEngineOptimization&#xff09;是指通过对网站内部结构、外部链接以及页面内容等进行调整&#xff0c;从而使其在搜索引擎中排名更靠前&#xff0c;从而带来更多的流量和曝光。SEO是数字营销中的重要一环&#xff0…

【web开发】4、JavaScript与jQuery

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、JavaScript与jQuery二、JavaScript常用的基本功能1.插入位置2.注释3.变量4.数组5.滚动字符 三、jQuery常用的基本功能1.引入jQuery2.寻找标签3.val、text、appe…

Yolov8魔术师:卷积变体大作战,涨点创新对比实验,提供CVPR2023、ICCV2023等改进方案

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文独家改进&#xff1a;提供各种卷积变体DCNV3、DCNV2、ODConv、SCConv、PConv、DynamicSnakeConvolution、DAT&#xff0c;引入CVPR2023、ICCV2023等改进方案&#xff0c;为Yolov8创新保驾护航&#xff0c;提供各种科研对比实验 &am…

js如何实现字符串反转?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用 split() 和 reverse() 方法⭐ 使用循环⭐ 使用递归⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专…

数控程序传输DNC服务、数控刀补服务(发那科fanuc、西门子、三菱、广数、新代、华中、宝元、马扎克、大畏Okuma)等数据采集服务

行业现状&#xff1a; 最近听到很多做MES、ERP这一行的叫苦&#xff0c; 客户对项目的要求越来越严格&#xff0c;做到数字化工厂都伴随着ERP、MES的项目要求必须一起做下去 然而很对MES、ERP对设备协议不懂&#xff0c;买了协议自己还要开发&#xff0c;考虑线程的问题、断…

C++多线程编程(第三章 案例2,条件变量,生产者-消费者模型)

目录 1、condition_variable1.1、生产者消费者模型1.2、改变共享变量的线程步骤1.3、等待信号读取共享变量的线程步骤1.3.1、获得改变共享变量线程共同的mutex1.3.2、wait()等待信号通知1.3.2.1、无lambda表达式1.3.2.2 lambda表达式 样例代码 1、condition_variable 等待中&a…

数据平滑和离群值检测

目录 移动窗口方法 常见的平滑方法 检测离群值 非均匀数据 数据平滑指用于消除数据中不需要的噪声或行为的技术&#xff0c;而离群值检测用于标识与其余数据显著不同的数据点。 移动窗口方法 移动窗口方法是分批处理数据的方式&#xff0c;通常是为了从统计角度表示数据中…

Union-Find Algorithm-并查集

目录 1.概念 2.并查集的优化 1.路径压缩&#xff08;Path Compression&#xff09; 1&#xff09;隔代压缩&#xff1a; 2&#xff09;完全压缩&#xff1a; 2.按秩合并 1.概念 并查集&#xff1a;用于判断一对元素是否相连&#xff0c;它们的关系是动态添加&#xff08…

嵌入式学习笔记(20) SoC时钟系统简介

什么是时钟&#xff0c;SoC为什么需要时钟 &#xff08;1&#xff09;时钟同步工作系统的同步节拍 &#xff08;2&#xff09;SoC内部有很多器件&#xff0c;譬如CPU、DRAM控制器、串口、GPIO等内部外设&#xff0c;这些东西要彼此协调工作&#xff0c;需要一个同步的时钟系统…

解决css设置图片大小不生效的问题

今天在做css布局时发现一个问题&#xff1a;设置图片大小不生效&#xff1a; 如上图所示&#xff1a;左上角两个图标的大小不一致&#xff0c;第一个是56x56,第二个是49x49,所以要把第二个的高度设置成56px&#xff1a; .mi-home img {height: 56px; }但是如上代码&#xff0c;…

Java-钉钉订阅事件

文章目录 背景什么是钉钉订阅事件钉钉订阅事件的应用场景 整体思路查看钉钉文档 什么是钉钉回调钉钉回调具体实操创建自己的应用钉钉回调开发过程中遇到的问题 总结 背景 最近需要做一个业务&#xff1a;钉钉组织架构下添加人员之后&#xff0c;要对该人员的数据信息做一个处理…

mysql课堂笔记 mac

目录 启动mac上的mysql 进入mysql mac windows 创建数据库 创建表 修改字段数据类型 修改字段名 增加字段 删除字段 启动mac上的mysql sudo /usr/local/mysql/support-files/mysql.server start 直接输入你的开机密码即可。 编辑 进入mysql mac sudo /usr/local…

Revit SDK 介绍:MeasurePanelArea 统计分割表面中族的面积

前言 这个例子介绍如果从分割表面中&#xff0c;获取内部Tile&#xff08;或者Panel&#xff09;的族里面的几何实体的面的面积。 内容 本例子的逻辑相对来说比较简单&#xff0c;主要是对 DividedSurface 和 Element 的API接口要熟悉。 核心逻辑 设置单个面板Panel的面积上…

交友盲盒完整版——详细源码分享

现在目前比较火热的一款app交友盲盒是通过uniappspringboot技术来制作的&#xff0c;原理其实很简单&#xff0c;大家一看便知。 大家自行下载到手机里面去使用即可&#xff0c;不支持ios手机 演示地址&#xff1a;https://share.weiyun.com/l3ovztce 下面就是给大家分享源码了…

用Maloja创建音乐收听统计数据

什么是 Maloja &#xff1f; Maloja 是简单的自托管音乐记录数据库&#xff0c;用于创建个人收听统计数据。没有推荐&#xff0c;没有社交网络&#xff0c;没有废话。Maloja 是一个跟踪您一段时间内的收听习惯的工具。 官方演示站点&#xff1a;https://maloja.krateng.ch/ 导出…

一路风景一路歌 森海塞尔MKE 200为你记录City Walk的美妙旋律

“想要切身融入并感受一个地方的生活&#xff0c;不去当地街头溜达溜达怎么行&#xff1f;”一位City Walk Vlogger这样说。 City Walk可谓是时下最潮的生活方式之一了。不仅越来越多的游客开始穿梭于城市街巷&#xff0c;探寻饱含记忆的老建筑、老街区&#xff0c;从另一种角度…

Smallest number(dfs全排列)

Smallest number - 洛谷 #include<bits/stdc.h> #define int long long using namespace std; int a[10]; string s[5]; bool vis[10]; int ans1e13;//0x3f1e9&#xff0c;所有有点不够 void dfs(int u) { // for(int i0;i<4;i) // { // printf("%d…