数组的扩容
数组的长度不可变,因此要进行数组扩容就需要创建一个新的数组,新数组长度比旧数组大一个值(可以是1也可以是旧数组的1.5倍也可以是旧数组的2倍),然后将有数组中的值赋给新数组。
/*
* 把数组的最大值,添加到数组的末尾(数组的扩容)
*/
public class Demo02 {
public static void main(String[] args) {
int[] array = new int[10];
// 给数组赋值
for (int i = 0; i < array.length; i++) {
array[i] = (int) (Math.random() * 100 + 1);
}
// 找出数组中的最大值
int max = array[0];
for (int i = 0; i < array.length; i++) {
if (max < array[i]) {
max = array[i];
}
}
// 声明和创建一个临时数组
int[] temporaryArray = new int[array.length + 1];
// 数组复制,可以通过也可以通过下方法其他方式实现
for (int i = 0; i < array.length; i++) {
temporaryArray[i] = array[i];
}
temporaryArray[array.length] = max;
array = temporaryArray;
System.out.println(Arrays.toString(array));
}
}
数组复制
-
方式一:原始方式
int[] temporaryArray = new int[array.length + 1]; for (int i = 0; i < array.length; i++) { temporaryArray[i] = array[i]; }
-
方式二:使用System类的arraycopy方法
// 临时数组 int[] temporaryArray = new int[array.length + 1]; /* * 数组复制 * 使用System类的arraycopy方法 * 1、被复制数组 * 2、复制开始位置(下标) * 3、目标数组(复制到哪个数组) * 4、复制到的位置(下标) * 5、复制的长度 */ System.arraycopy(array,0,temporaryArray,0,array.length);
-
方式三:使用Arrays类的
/* * 数组复制 * 使用Arrays工具类实现 * 返回值:一个数组 * 1、被复制数组 * 2、返回数组的长度 */ array = Arrays.copyOf(array,array.length + 1);
数组排序
-
冒泡排序
// 冒泡排序 for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j < array.length - 1 - i; j++) { if (array[j] > array[j + 1]) { int temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } }
-
选择排序
for (int i = 0; i < array.length - 1; i++) { int index = 0; for (int j = 1; j < array.length - i; j++) { if (array[j] > array[index]) { index = j; } } int temp = array[index]; array[index] = array[array.length -1 - i]; array[array.length - 1 -i] = temp; }
-
使用工具类Arrays类实现
// 使用数组工具类排序(升序) Arrays.sort(array);