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 月有 3114 4 月有 30 天        5 月有 31 天        6 月有 3015 7 月有 31 天        8 月有 31 天        9 月有 3016 10 月有 31 天        11 月有 30 天        12 月有 3117 遍历二维数组:
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

 

posted @ 2016-03-29 00:06  sunshine-habit  阅读(164)  评论(0编辑  收藏  举报