Chapter05
数组 排序 查找
数组定义
数组可以存放多个同一类型的数据。
数组也是一种数据类型,是引用类型。
即:数组就是一组数据
double 数组名[] = {…} double类型的数组
动态初始化1
数据类型 数组名[] = new 数据类型[大小]
int a[] = new int[5];
a[2] 数组的第三个数
动态初始化2
声明数组 数据类型 数组名[]; int a[];
创建数组 数组名=new 数据类型[大小]; a = new int[10];
静态初始化
知道具体有多少元素
数组注意事项
- 数组内应该是同类型的数据(或可以自动类型转换的)
- 数组内可以放基本数据类型和引用数据类型
- 数组若未赋值,有默认值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
- 数组属于引用类型,本质是对象
数组练习
数组赋值机制
1
值传递/值拷贝和引用传递/地址拷贝的区别
更改arr2[0]相当于更改arr1[0]的值
数组拷贝
数组反转
逆序反转
数组扩容/缩减
//要求:实现动态的给数组添加元素效果,实现对数组扩容。
// 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控制
数组扩容
数组缩减
排序
排序是将多个数据,依照指定的顺序进行排列的过程
1.内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法).
2.外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法).
冒泡排序(BubbleSorting):
通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,
查找
1.顺序查找
2.二分查找
二维数组
二维数组的每个元素都是一维数组
语法:类型 数组名[][]=new 类型[大小][大小]
int a[][] = new int [2][3]
二维数组在内存的存在形式
二维数组使用
动态初始化2
动态初始化—列数不确定
静态初始化
杨辉三角
注意
一维数组声明方式 int[] x 或 int x[]
二维数组声明方式 int[][] y 或 int[] y[] 或 int y[][]
二维数组实际上是由多个一维数组组成的,
它的各个一维数组的长度可以相同,也可以不同