No1_4.数组的基本操作_Java学习笔记
1 import java.util.Arrays; 2 3 public class HelloArrayOp { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 8 System.out.println("第131页:数组的基本操作:" 9 + "\n1.遍历数组" 10 + "\n2.填充替换数组元素" 11 + "\n3.对数组进行排序" 12 + "\n4.复制数组" 13 + "\n5.范例一:对比一维、二维数组所占内存" 14 + "\n6.范例二:使用直接插入排序法排序" 15 + "\n7.范例三:使用冒泡排序法排序" 16 + "\n8.范例四:输出九宫格" 17 +"\n9.实战:输出二维数组中所有元素之和"); 18 // No1:遍历数组 19 System.out.println("\n 【No1:遍历数组】"); 20 int day[] = new int[] { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; 21 for (int i = 1; i <= 12; i++) { 22 System.out.print(i + " 月有 " + day[i - 1] + " 天" + "\t\t"); 23 if (i % 3 == 0) 24 System.out.println(); 25 } 26 /* 27 * oreach的语句格式: for(元素类型t 元素变量x : 遍历对象obj){ 引用了x的java语句; } 28 */ 29 int arr2[][] = { { 1, 2, 3 }, { 7, 8, 9 } }; 30 System.out.println("遍历二维数组:"); 31 for (int x[] : arr2) { 32 for (int m : x) { 33 System.out.print(m + " \t"); 34 } 35 } 36 37 // No2:填充替换数组元素: fill(int[] a,int value) 38 // fill(int[] a,int fromIndex, int toIndex(包括), int value(不包括)) 39 System.out.println("\n\n 【No2:填充替换数组元素】 "); 40 int arr3[] = new int[5]; 41 Arrays.fill(arr3, 8); 42 System.out.println("填充后所有的值都相同:"); 43 for (int y : arr3) { 44 System.out.print(y + "\t"); 45 } 46 System.out.println("\n给指定范围填充值"); 47 Arrays.fill(arr3, 1, 3, 6); 48 for (int y : arr3) { 49 System.out.print(y + "\t"); 50 } 51 52 // No3:对数组进行排序 sort() 53 System.out.println("\n\n 【No3:对数组进行排序】"); 54 int arrS[] = new int[] { 8, 10, 4, 1, 5, 6, 3 }; 55 System.out.println("原数组:"); 56 for (int s : arrS) { 57 System.out.print(s + "\t"); 58 } 59 Arrays.sort(arrS); 60 System.out.println("\n排序后数组:"); 61 for (int s : arrS) { 62 System.out.print(s + "\t"); 63 } 64 65 // No4:复制数组 copyOf() copyOfRange() 66 System.out.println("\n\n 【No4:复制数组】"); 67 int arrC1[] = new int[] { 1, 2, 3, 4, 5, 6 }; 68 int arrNew[] = Arrays.copyOf(arrC1, 3); 69 int arrNew2[] = Arrays.copyOfRange(arrC1, 3, 5); 70 System.out.println("复制后的数组arrNew是:"); 71 for (int c1 : arrNew) { 72 System.out.print(c1 + "\t"); 73 } 74 System.out.println("\n复制后的数组arrNew2是:"); 75 for (int c1 : arrNew2) { 76 System.out.print(c1 + "\t"); 77 } 78 79 // No5:范例一:对比一维、二维数组所占内存 80 81 System.out.println("\n\n 【No5:范例一:对比一维、二维数组所占内存】"); 82 int num1 = 1024 * 1024 * 2; 83 int arrNum[] = new int[num1]; 84 for (int i = 0; i < arrNum.length; i++) { 85 arrNum[i] = i; 86 } 87 // 获得占用内存总数,并将单位转换为MB 88 long memory1 = Runtime.getRuntime().totalMemory() / 1024 / 1024; 89 System.out.println("用一维数组占用内存总量为" + memory1 + "M"); 90 91 int num2 = 1024 * 1024; 92 int arrNum2[][] = new int[num2][2]; 93 for (int j = 0; j < arrNum2.length; j++) { 94 arrNum2[j][0] = j; 95 arrNum2[j][1] = j; 96 } 97 // 获得占用内存总数,并将单位转换为MB 98 long memory2 = Runtime.getRuntime().totalMemory() / 1024 / 1024; 99 System.out.println("用二维数组占用内存总量为" + memory2 + "M"); 100 /* 额,显示是占用内存相同。待考证。。。 */ 101 102 // No6:范例二:使用直接插入排序法排序 逻辑:将要排序的值逐个插入到其所适合的位置,其后的元素都向后移一个位置; 103 int arrSort2[] = new int[] { 2, 3, 1, 5, 6, 7, 9 }; 104 System.out.println("\n【No6:范例二:使用直接插入排序法排序】\n 排序前输出:"); 105 for (int k : arrSort2) { 106 System.out.print(k + "\t"); 107 } 108 int exchange, n; 109 for (int m = 1; m < arrSort2.length; m++) { 110 exchange = arrSort2[m]; 111 for (n = m - 1; n >= 0 && arrSort2[n] > exchange; n--) { // 把大于号改成小于号就变成了倒序哟~~ 112 arrSort2[n + 1] = arrSort2[n]; 113 } 114 arrSort2[n + 1] = exchange; 115 } 116 System.out.println(" \n 排序后输出:"); 117 for (int k : arrSort2) { 118 System.out.print(k + "\t"); 119 } 120 121 // No7.范例三:使用冒泡排序法排序 特点:排序稳定,效率不高 122 // 逻辑:对比相邻的两个值如果满足条件就交换值,较小的移到数组前面,较大的移到数组后面; 123 // 首先,排序算法的稳定性:通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。 124 int arrSort3[] = new int[] { 2, 3, 1, 5, 6, 7, 9 }; 125 System.out.println("\n\n【No7:范例三:使用冒泡排序法排序】:"); 126 int exchange2; 127 for (int si = 1; si < arrSort3.length; si++) { 128 for (int sj = 0; sj < arrSort3.length - si; sj++) { 129 if (arrSort3[sj] > arrSort3[sj + 1]) {// 把大于号改成小于号就变成了倒序哟~~ 130 exchange2 = arrSort3[sj]; 131 arrSort3[sj] = arrSort3[sj + 1]; 132 arrSort3[sj + 1] = exchange2; 133 } 134 } 135 } 136 System.out.println(" 冒泡排序后输出:"); 137 for (int k : arrSort3) { 138 System.out.print(k + "\t"); 139 } 140 // No8.范例四:输出九宫格 141 142 // No9.实战:输出二维数组中所有元素之和 143 int arrSort4[][] = new int[][] { { 2, 3, 1, 5, 6, 7, 9 }, 144 { 2, 5, 7, 8, 10 }, { 3, 4, 5 } }; 145 System.out.println("\n\n【No7:范例四:使用冒泡排序法排序】:"); 146 int arrSort4Sum = 0; 147 System.out.println("二维数组arrSort4中的元素是"); 148 for (int sumn = 0; sumn < arrSort4.length; sumn++) { 149 for (int summ = 0; summ < arrSort4[sumn].length; summ++) { 150 arrSort4Sum = arrSort4Sum + arrSort4[sumn][summ]; 151 System.out.print(arrSort4[sumn][summ] + "\t"); 152 } 153 System.out.println(); 154 155 } 156 System.out.println("二维数组中所有元素之和:" + arrSort4Sum); 157 } 158 }
输出结果:
1 第131页:数组的基本操作: 2 1.遍历数组 3 2.填充替换数组元素 4 3.对数组进行排序 5 4.复制数组 6 5.范例一:对比一维、二维数组所占内存 7 6.范例二:使用直接插入排序法排序 8 7.范例三:使用冒泡排序法排序 9 8.范例四:输出九宫格 10 9.实战:输出二维数组中所有元素之和 11 12 【No1:遍历数组】 13 1 月有 31 天 2 月有 29 天 3 月有 31 天 14 4 月有 30 天 5 月有 31 天 6 月有 30 天 15 7 月有 31 天 8 月有 31 天 9 月有 30 天 16 10 月有 31 天 11 月有 30 天 12 月有 31 天 17 遍历二维数组: 18 1 2 3 7 8 9 19 20 【No2:填充替换数组元素】 21 填充后所有的值都相同: 22 8 8 8 8 8 23 给指定范围填充值 24 8 6 6 8 8 25 26 【No3:对数组进行排序】 27 原数组: 28 8 10 4 1 5 6 3 29 排序后数组: 30 1 3 4 5 6 8 10 31 32 【No4:复制数组】 33 复制后的数组arrNew是: 34 1 2 3 35 复制后的数组arrNew2是: 36 4 5 37 38 【No5:范例一:对比一维、二维数组所占内存】 39 用一维数组占用内存总量为117M 40 用二维数组占用内存总量为117M 41 42 【No6:范例二:使用直接插入排序法排序】 43 排序前输出: 44 2 3 1 5 6 7 9 45 排序后输出: 46 1 2 3 5 6 7 9 47 48 【No7:范例三:使用冒泡排序法排序】: 49 冒泡排序后输出: 50 1 2 3 5 6 7 9 51 52 【No7:范例四:使用冒泡排序法排序】: 53 二维数组arrSort4中的元素是 54 2 3 1 5 6 7 9 55 2 5 7 8 10 56 3 4 5 57 二维数组中所有元素之和:77