概要
- 数组是一种引用数据类型
- 数组是一组数据的集合,是一种容器
- 数组中的元素类型可以是基本类型也可是引用数据类型,但同一个数组中只能有一种类型
- 数组的长度在数组创建的时候就确定了,无法在创建后再次修改
- 数组是由下标的,0表示第一个元素
数组的创建
1.一维数组
1 2 3 4 5 6
|
int[] intArr = new int[3]; int[0]=1;
int[] a = {1, 2, 3, 4};
|
1 2 3 4 5 6
|
String[] stringArr = new String[3]; stringArr[0] = new String();
String[] aa = {"a", "as", "asd"};
|
2.二维数组
当数组元素的类型是数组时就成了多维数组,二维数组的声明格式如下:
- 数组元素的数据类型[][] 变量名;
- 数组元素的数据类型 变量名[][];
数组的排序
1.冒泡排序
假设有5个数字3,1,6,2,5在一个int数组中,要求按从小到大排序输出
如何采用冒泡排序算法呢?冒泡排序的算法是这样的,首先从数组的最左边开始,
取出第0号位置(左边)的数据和第1号位置(右边)的数据,如果左边的数据大于右边的数据,
则进行交换,否而不进行交换。接下来右移一个位置,取出第1个位置的数据和第2个位置的数据,
进行比较,如果左边的数据大于右边的数据,则进行交换,否而不进行交换。沿着这个算法一直排序下去,
最大的数就会冒出水面,这就是冒泡排序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class ArraySortTest01 { public static void main(String[] args) { int[] data = {3, 1, 6, 2, 5}; for (int i = data.length - 1; i > 0; i--) { for (int j = 0; j < i; j++) { if (data[j] > data[j + 1]) { int temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp; } } } for (int aData : data) { System.out.println(aData); } } }
|
2.选择排序
选择排序对冒泡排序进行了改进,使交换次数减少,但比较次数仍然没有减少。
假设有5个数字3,1,6,2,5在一个int数组中,要求按从小到大排序输出
采用选择排序,选择排序是这样的,
先从左端开始,找到下标为0的元素,然后和后面的元素依次比较,如果找到了比下标0小的元素,
那么再使用此元素,再接着依次比较,直到比较完成所有的元素,最后把最小的和第0个位置交换。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public class ArraySortTest02 { public static void main(String[] args) { int[] data = {3, 1, 6, 2, 5}; for (int i = data.length - 1; i > 0; i--) { int max = 0; for (int j = 0; j < i; j++) { if (data[max] < data[j + 1]) { max = j + 1; } } if (max != i) { int temp = data[i]; data[i] = data[max]; data[max] = temp; } } for (int aData : data) { System.out.println(aData); } } }
|