常见一维数组操作
常见一维数组操作
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/**
* 1)(使用输入值初始化数组)下面的循环使用用户输人的数值初始化数组array
*
*/
public static void inputInitalize() {
int[] array = new int[10];
Scanner input = new Scanner(System.in);
System.out.print("1)输入值初始化数组:");
for (int i = 0; i < array.length; i++) {
array[i] = input.nextInt();
}
input.close();
System.out.println(Arrays.toString(array));
}
/**
* 2)(使用随机数初始化数组)下面的循环使用0.0 到100.0 之间,但小于100.0 的随机值初始化数组array
*
*/
public static void randomInitialize() {
int[] array = new int[10];
System.out.print("2)随机数初始化数组:");
for (int i = 0; i < array.length; i++) {
array[i] = (int) (Math.random() * 100);
}
System.out.println(Arrays.toString(array));
}
/**
* 3)(显示數组)为了打印数组,必须使用类似下面的循环,打印数组中的每一个元素。
*/
public static void printArray() {
int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
System.out.print("3)显示数组{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }:");
// 采用for循环打印数组
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
// 采用Arrays.toString()打印数组
System.out.print(Arrays.toString(array));
}
/**
* 4)(对所有元素求和)使用名为sum的变量存储和,sum的值初始化为0,使用如下循环将数组中的每个元素加到sum中:
*/
public static void sumArray() {
int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int sum = 0;
System.out.println();
System.out.print("4)对{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }所有元素求和:");
for (int i = 0; i < array.length; i++) {
sum += array[i];
}
System.out.println(sum);
}
/**
* 5)(找出最大元素)使用名为max 的变量存储最大元素。 将max的值初始化为myList[0]。
* 为了找出数组array中的最大元素,将每个元素与max比较,如果该元索大于max, 则更新max。
*/
public static void searchMax() {
int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int max = array[0];
for (int i = 0; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
}
}
System.out.println("5)数组{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }最大元素:" + max);
}
/**
* 6)(找出最大元素的最小下标值)经常需要找出数组中的最大元素。
* <P>
* 如果数组中含有多个最大元素,那么找出最大元素的最小下标值。
* <P>
* 假设数组array为{1,5,3,4,5,5}。
* <P>
* 最大元素为5,5的最小下标为1。
* <P>
* 使用名为max的变量存储最大元素,使用名为indexOfMax的变量表示最大元素的下标。
* <P>
* 将max的值初始化为array[0], 而将indexOfMax 的值初始化为0。
* <P>
* 将array中的每个元素与max比较,如果这个元素大于max,则更新max和indexOfMax。
*/
public static void searchIndexOfMax() {
int[] array = { 1, 5, 3, 5, 5 };
int max = array[0];
int indexOfMax = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
indexOfMax = i;
}
}
System.out.println("6)" + Arrays.toString(array) + "最大元素:" + max + " 最小下标:" + indexOfMax);
}
/**
* 7)(随机打乱)在很多应用程序中,需要对数组中的元素进行任意的重新排序。这称作打乱(shuffling)。
* <P>
* 为完成这种功能,针对每个元素array[i], 随意产生一个下标j, 然后将array[i]和array[j]互换。
*/
public static void shuffleArray() {
int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (int i = 0; i < array.length; i++) {
int j = (int) (Math.random() * (i + 1));
// 用array[j]交换array[i]
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
System.out.println("7)将数组" + "{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }" + "随机打乱:" + Arrays.toString(array));
}
/**
* 8)(移动元素)有时候需要向左或向右移动元素。
* <P>
* 这里的例子就是将元素向左移动一个位置并且将第一个元素放在最后一个元素的位置:
*/
public static void moveLeftArray() {
int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int temp = array[0];
for (int i = 1; i < array.length; i++) {
array[i - 1] = array[i];
}
array[array.length - 1] = temp;
System.out.println("8)将数组{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }向左移动一个元素:" + Arrays.toString(array));
}