首页 > 编程语言 >Java从入门到精通-数组(二)

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

时间:2023-09-09 10:01:26浏览次数:35  
标签:arr Java 入门 int 元素 numbers 数组 排序

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

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 + " 未找到。");
}

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

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;
    }
}

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

6.实践与练习

• 6.1. 数组概述

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

• 2. 一维数组

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

• 3. 二维数组

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

• 4. 数组的基本操作

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

• 5. 数组排列算法

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

• 6. 综合实践

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

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

标签:arr,Java,入门,int,元素,numbers,数组,排序
From: https://blog.51cto.com/u_15747017/7417704

相关文章

  • 数组学习
    这个是数组中的Arrays类,里面有很多种方法,然后几种常见的在PPT上 数组就是,如上图所示,行与行之间用逗号隔开,也装在大括号里,这个点不太熟悉......
  • 简单梳理java中的类加载
    一、类加载器简介java中自带的类加载器可以分为根类加载器(BootStrapclassloader),扩展类加载器,应用类加载器,这三个都不是用java语言实现的。其中根类加载器和扩展类加载器用来加载java自带的一些类,而应用类加载器用来加载我们自己写的java类编译后的class文件,也就是classpath......
  • 数组
    这边是java数组的初始化,C++有同有异;然后nums.length可以获取数组长度......
  • Java基础知识
    一、基础知识注释的作用解释说明程序,提高程序的阅读性帮助我们调试程序Java语言最基本的单位的类,所以我们首先要定义一个类Java程序要想能够独立运行,必须要有主方法如果想要Java程序有输出,必须要有输出语句定义类的格式:classclassname{......
  • 多维数组
    #include<stdio.h>#include<stdlib.h>#defineM3#defineN3voidinput(inta[][N],intm){ inti,j; for(i=0;i<m;i++) for(j=0;j<N;j++) scanf("%d",&a[i][j]);}voidoutput(inta[][N],intm){ in......
  • java8学习
    java8安装与环境变量配置chocochoco官网安装命令:chocoinstalljdk8自动配置环境变量IDEA官网安装java语法注:由于默认具有cpp基础,所以和cpp极为相似的点我不会提及。enum枚举publicenumPlayerType{TENNIS("网球"),FOOTBALL("足球"),//常量FOOTBALL......
  • day2 - 数组part02
    力扣977.有序数组的平方思路1:双指针,在数组中心的两个数,作为左右指针的开始,循环比较左右指针,找出最小的平方,插入到结果数组中。此思路是错误的,因为数组中心不见得是平方最小的数,比如数组:-4,-3,-2,-1如果要输出的话,第一个就应该输出-1,并不是最中心的数。思路2:那我先遍历数组,找出......
  • 使用 idea debug 远程 java 进程
    线上环境使用的jdk版本为1.8,对应的java启动命令java-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=50050-jarxxxx.jar注意服务器需要开放对应的50050tcp端口idea配置:Run->EditConfiguration->+->RemoteJVMDebug->填写ip端口->启......
  • HTML零基础入门(1)
    博主主页:倔强的大蜗牛 ......
  • Java学习_004 数据输入:案例2
    需求:三个和尚的身高需要手动输入,请用程序实现这三个和尚的最高身高。importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intheight1=sc.nextInt();intheight2......