Java 数组、排序和查找(2)

简介: 数组的基本知识

前言

数组基本概念复习

一、数组拷贝

案例演示:

将 int[] arr1 = {10,20,30}; 拷贝到 arr2 数组, 要求数据空间是独立的。

publicclassArrayCopy {
publicstaticvoidmain(String[] args) {
int[] arr1= {10, 20, 30};
// 创建一个新的数组 arr2 , 开辟新的数据空间// 大小 和arr1 一样大int[] arr2=newint[arr1.length];
//遍历 arr1 ,把每个元素拷贝到对应的位置for(inti=0; i<arr1.length; i++) {
arr2[i] =arr1[i];
         }
arr2[0] =100; // 修改 arr2 不会对 arr1 造成影响System.out.print("arr1数组的值为:");
for(inti=0; i<arr1.length; i++) { 
System.out.print(arr1[i] +" ");
        }
System.out.println( );
System.out.print("arr2数组的值为:");
for(inti=0; i<arr1.length; i++) { 
System.out.print(arr2[i] +" ");
        }
    }
}

可以看出 arr2 的改变没有影响到 arr1,这就是数组的拷贝,会开创独立的数据空间,不会互相影响。

二、数组反转

案例演示:

(1)方法一

把数组的元素内容反转。如 arr = {11,22,33,44,55,66} 反转为 arr = {66, 55,44,33,22,11}

publicclassArrayReverse {
publicstaticvoidmain(String[] args) {
int[] arr= {11, 22, 33, 44, 55, 66};
for( inti=0; i<arr.length/2; i++) { 
inttemp=arr[arr.length-1-i];
arr[arr.length-1-i] =arr[i];
arr[i] =temp;
        }
for( inti=0; i<arr.length ; i++) {
System.out.print(arr[i] +" ");
        }
    }
}

分析:

1)把 arr[0] 和 arr[5] 进行交换 {66, 22, 33, 44, 55, 11}

2)把 arr[1] 和 arr[4] 进行交换 {66, 55, 33, 44, 22, 11}

3)把 arr[2] 和 arr[3] 进行交换 {66, 55, 44, 33, 22, 11}

4)一共要交换三次,所以总共循环次数应为 arr.length / 2 次

5)每次交换时,对应的下标 是 arr[i] 和 arr[arr.length - 1 - i]

(2)方法二

publicclassArrayReverse02 {
publicstaticvoidmain(String[] args) {
int[] arr= {11, 22, 33, 44, 55, 66};
int[] arr2=newint[arr.length];
for( inti=arr.length-1 , j=0; i>=0 ; i-- , j++) {
arr2[j] =arr[i];
        }
arr=arr2;
//当 arr 指向 arr2 数据空间,此时 arr 原来的数据空间就没有for( inti=0 ; i<arr.length ; i++) {
System.out.print(arr[i] +" ");
        }
    }
}

分析:

1)先创建一个新的数组 arr2, 大小为 arr.length

2)逆序遍历 arr,将每个元素拷贝到 arr2的元素中

3) arr 指向 arr2 数据空间,此时 arr 原来的数据空间就没有了,会被当做垃圾销毁

相关文章
|
2月前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
33 4
|
2月前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
40 2
|
2月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
95 2
|
2月前
|
存储 Java
什么是带有示例的 Java 中的交错数组?
什么是带有示例的 Java 中的交错数组?
55 9
|
2月前
|
Java
Java数组动态扩容和动态缩减
Java数组动态扩容和动态缩减
26 3
|
2月前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
31 6
|
2月前
|
存储 搜索推荐 算法
【用Java学习数据结构系列】七大排序要悄咪咪的学(直接插入,希尔,归并,选择,堆排,冒泡,快排)以及计数排序(非比较排序)
【用Java学习数据结构系列】七大排序要悄咪咪的学(直接插入,希尔,归并,选择,堆排,冒泡,快排)以及计数排序(非比较排序)
29 1
|
2月前
|
存储 Java 程序员
【一步一步了解Java系列】:何为数组,何为引用类型
【一步一步了解Java系列】:何为数组,何为引用类型
34 1
|
2月前
|
存储 XML Java
如何在 Java 中将常见文档转换为 PNG 图像数组
如何在 Java 中将常见文档转换为 PNG 图像数组
18 1
|
2月前
|
存储 安全 Java
Java数组(Arrays)详解
Java 中的数组是一种用于存储固定数量同类型数据的高效数据结构,支持连续内存存储和随机访问。数组可以声明并初始化,通过索引访问和修改元素,获取长度,使用循环遍历,支持多维形式,并可通过 `Arrays` 类的方法进行复制和排序。数组具有固定大小和类型安全的特点,但需注意越界等问题。灵活运用数组能显著提升编程效率。
129 9
下一篇
DataWorks