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

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

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: 创建一个简单的任务管理程序,使用数组来存储任务的描述和状态(未完成/已完成),并提供选项来添加、查看和标记任务的状态。

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

相关文章
|
26天前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
222 0
|
2月前
|
Java
java入门代码示例
本文介绍Java入门基础,包含Hello World、变量类型、条件判断、循环及方法定义等核心语法示例,帮助初学者快速掌握Java编程基本结构与逻辑。
369 0
|
3月前
|
安全 Java 数据库连接
2025 年最新 Java 学习路线图含实操指南助你高效入门 Java 编程掌握核心技能
2025年最新Java学习路线图,涵盖基础环境搭建、核心特性(如密封类、虚拟线程)、模块化开发、响应式编程、主流框架(Spring Boot 3、Spring Security 6)、数据库操作(JPA + Hibernate 6)及微服务实战,助你掌握企业级开发技能。
522 3
|
3月前
|
存储 缓存 Java
Java数组全解析:一维、多维与内存模型
本文深入解析Java数组的内存布局与操作技巧,涵盖一维及多维数组的声明、初始化、内存模型,以及数组常见陷阱和性能优化。通过图文结合的方式帮助开发者彻底理解数组本质,并提供Arrays工具类的实用方法与面试高频问题解析,助你掌握数组核心知识,避免常见错误。
|
2月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
2月前
|
前端开发 Java 数据库连接
帮助新手快速上手的 JAVA 学习路线最详细版涵盖从入门到进阶的 JAVA 学习路线
本Java学习路线涵盖从基础语法、面向对象、异常处理到高级框架、微服务、JVM调优等内容,适合新手入门到进阶,助力掌握企业级开发技能,快速成为合格Java开发者。
462 4
|
3月前
|
NoSQL Java 关系型数据库
Java 从入门到进阶完整学习路线图规划与实战开发最佳实践指南
本文为Java开发者提供从入门到进阶的完整学习路线图,涵盖基础语法、面向对象、数据结构与算法、并发编程、JVM调优、主流框架(如Spring Boot)、数据库操作(MySQL、Redis)、微服务架构及云原生开发等内容,并结合实战案例与最佳实践,助力高效掌握Java核心技术。
376 0
|
3月前
|
Java 测试技术 API
Java IO流(二):文件操作与NIO入门
本文详解Java NIO与传统IO的区别与优势,涵盖Path、Files类、Channel、Buffer、Selector等核心概念,深入讲解文件操作、目录遍历、NIO实战及性能优化技巧,适合处理大文件与高并发场景,助力高效IO编程与面试准备。
|
3月前
|
Java 编译器 API
Java Lambda表达式与函数式编程入门
Lambda表达式是Java 8引入的重要特性,简化了函数式编程的实现方式。它通过简洁的语法替代传统的匿名内部类,使代码更清晰、易读。本文深入讲解Lambda表达式的基本语法、函数式接口、方法引用等核心概念,并结合集合操作、线程处理、事件回调等实战案例,帮助开发者掌握现代Java编程技巧。同时,还解析了面试中高频出现的相关问题,助你深入理解其原理与应用场景。