数组声明创建
1 2 3
| int[] nums; nums = new int[10]; nums[0]=1;
|
数组初始化
1 2 3 4 5
| int[] a = {1,2,3,4,5,6,7,8};
int[] b = new int[10] b[0] = 1;
|
数组的四个基本特点
- 长度是确定的,不能更改。
- 其元素必须是相同类型的,不允许出现混合类型。
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型。
- 数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。
数组的使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public static void main(String[] args) { int[] arrays = {1,2,3,4,5}; for (int i = 0; i < arrays.length; i++) { System.out.println(arrays[i]); } System.out.println("=============="); int sum = 0; for (int i = 0; i < arrays.length; i++) { sum += arrays[i]; } System.out.println("sum="+sum); System.out.println("============="); int max = arrays[0]; for (int i = 0; i < arrays.length; i++) { if (arrays[i]>max){ max = arrays[i]; } } System.out.println("max="+max); }
|
1 2 3 4 5
| int[] arrays = {1,2,3,4,5}; for (int array : arrays) { System.out.println(array); }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public static void printArray(int[] arrays){ for(int i = 0;i < arrays.length; i++){ System.out.print(arrays[i]+" "); } }
public static int[] reverse(int[] arrays){ int[] result = new int[arrays.length]; for (int i = 0,j = result.length-1;i < arrays.length; i++,j++){ result[j] = arrays[i]; } return result; }
|
多维数组
多维数组可以看是数组的数组,二维数组是一个特殊的一维数组,其每一个元素都是一个一维数组。
1 2 3 4 5 6 7
| int[][] array = {{1,2},{2,3},{3,4},{4,5}};
for(int i = 0; i < array.length ; i++){ for (int j = 0;j < array[i].length; j++){ System.out.print(array[i][j]+" "); } }
|
冒泡排序
- 比较数组中两个相邻的元素,如果第一个元素比第二个大,我们就交换位置。
- 每一次比较,都会产生一个最大,或者最小的数字,下一轮则可以少一次排序。
- 依次循环,直到结束。
1 2 3 4 5 6 7 8 9 10 11 12 13
| public static int[] sort(int[] array) { int temp = 0; for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j < array.length - 1 - i; j++) { if (array[j + 1] > array[j]) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } return array; }
|
稀疏数组
- 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
- 处理方式:记录数组一共有几行几列,有多少个不同值;把具有不同值的元素和行列及值记录在一个小规模的数组中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| int sum = 0; for (int i = 0; i < 11; i++) { for (int j = 0; j < 11; j++) { if(array1[i][j]!=0){ sum++; } } } System.out.println("有效值的个数:"+sum);
int[][] array2 = new int[sum+1][3];
array2[0][0] = 11; array2[0][1] = 11; array2[0][2] = sum;
int count = 0; for (int i = 0; i < array1.length; i++) { for (int j = 0; j < array1[i].length; j++) { if(array1[i][j]!=0){ count++; array2[count][0] = i; array2[count][1] = j; array2[count][2] = array1[i][j]; } } } System.out.println("稀疏数组"); for (int i = 0; i < array2.length; i++) { System.out.println(array2[i][0] + "\t" + array2[i][1] + "\t" + array2[i][2] + "\t"); }
|