阅读时间约 6 分钟

Java-Phase01-Chapter05

数组,排序,查找

Posted by LuckyE on March 7, 2025

Chapter05

数组 排序 查找

数组定义

数组可以存放多个同一类型的数据。

数组也是一种数据类型,是引用类型。

即:数组就是一组数据

double 数组名[] = {…} double类型的数组

动态初始化1

数据类型 数组名[] = new 数据类型[大小]

int a[] = new int[5];

a[2] 数组的第三个数

Untitled

动态初始化2

声明数组 数据类型 数组名[]; int a[];

创建数组 数组名=new 数据类型[大小]; a = new int[10];

Untitled

静态初始化

知道具体有多少元素

Untitled

数组注意事项

  • 数组内应该是同类型的数据(或可以自动类型转换的)
  • 数组内可以放基本数据类型和引用数据类型
  • 数组若未赋值,有默认值int 0, short 0, byte 0, long 0, float 0.0, double 0.0, char \u000, Boolean false, String null
  • 数组下标从0开始
  • 数组下标必须在指定范围内使用,如int array[] = new int[5], 有效下标应为0-4
  • 数组属于引用类型,本质是对象

数组练习

Untitled

Untitled

Untitled

数组赋值机制

Untitled

1
值传递/值拷贝和引用传递/地址拷贝的区别

Untitled

更改arr2[0]相当于更改arr1[0]的值

Untitled

数组拷贝

Untitled

Untitled

Untitled

数组反转

Untitled

Untitled

逆序反转

Untitled

数组扩容/缩减

//要求:实现动态的给数组添加元素效果,实现对数组扩容。

// 1.原始数组使用静态分配int[]arr={1,2,3}

// 2.增加的元素4,直接放在数组的最后arr={1,2,3,4}

// 3.用户可以通过如下方法来决定是否继续添加,添加成功,是否继续?y/n

// 思路

// 1定义初始数组 int[] arr={1,2,3}//下标0-2

// 2定义-个新的数组 int[] arrNew = new int[arr。length+1];

// 3遍历 arr 数组,依次将arr的元素拷贝到 arrNew数组

// 4将 4 赋给 arrNew[arrNew.length - 1]=4;把4赋给arrNew最后一个元素

// 5让 arr 指向 arrNew ; arr = arrNew;那么 原来arr数组就被销毁

//6创建一个Scanner接收用户输入

//7 不确定什么时候退出,使用do-while break控制

数组扩容

Untitled

数组缩减

Untitled

排序

排序是将多个数据,依照指定的顺序进行排列的过程

1.内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法).

2.外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法).

冒泡排序(BubbleSorting):

通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,

Untitled

Untitled

Untitled

Untitled

Untitled

Untitled

查找

1.顺序查找

Untitled

2.二分查找

二维数组

二维数组的每个元素都是一维数组

Untitled

语法:类型 数组名[][]=new 类型[大小][大小]

int a[][] = new int [2][3]

Untitled

二维数组在内存的存在形式

Untitled

二维数组使用

动态初始化2

Untitled

动态初始化—列数不确定

Untitled

Untitled

静态初始化

杨辉三角

Untitled

注意

一维数组声明方式 int[] x 或 int x[]

二维数组声明方式 int[][] y 或 int[] y[] 或 int y[][]

二维数组实际上是由多个一维数组组成的,

它的各个一维数组的长度可以相同,也可以不同

Untitled

Homework

Untitled

Untitled

Untitled

Untitled