第六章 数组、排序查找
6.1 数组
数组的定义:数据类型 数组名[] = new 数据类型[大小];
int a[] = new int[5];
或者分开”:
double scores[];
scores = new double[5];
//基本数据类型赋值,赋值方式为值拷贝;
//n2的变化不会影响到n1;
int n1 = 10;
int n2 = n1;
n2 = 80;
System.out.println(n1);//10
System.out.println(n3);//80
//数组在默认情况下是引用传递,赋的值是地址,赋值方式为引用赋值
//是一个地址,arr2的变化会影响到arr1;
int[] arr1 = {1,2,3};
int[] arr2 = arr1;
arr2[0] = 10;
//看arr1的值
for(int i = 0 ; i< arr1.length;i++){
System.out.println(arr1[i]);//10 2 3
}
6.2 排序
排序是将多个数据,依指定的顺序进行排列的过程。
6.2.1内部排序:
指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法);
冒泡排序
冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。
6.2.2外部排序法:
数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。
6.3查找
在 java 中,我们常用的查找有两种:
\1) 顺序查找 SeqSearch.java
\2) 二分查找【二分法,我们放在算法讲解】
6.4 多维数组
\1) 语法: 类型[][] 数组名=new 类型[大小][大小]
\2) 比如: int a[][]=new int[2][3]
二维数组的每个元素是一维数组, 所以如果需要得到每个一维数组的值,还需要再次遍历
//(3) 如果我们要访问第 (i+1)个一维数组的第 j+1 个值 arr[i][j];
// 举例 访问 第 3 个一维数组的第 4 个值 arr[2][3]
6.5 二维数组使用细节和注意事项
\1) 一维数组的声明方式有:
int[] x 或者 int x[]
\2) 二维数组的声明方式有:
int[][] y 或者 int[] y[] 或者 int y[][]
\3) 二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。比如:
map[][] 是 一个二维数组
int map [][] = {{1,2},{3,4,5}}