一.什么是数组
- 数组是存储同一组数据类型多个元素的集合,也可以看成是一种容器
- 看见[ ],就是数组
//长度为5的数组
int[] array = new int[5];
//第二种写法
int[] age = {15,20,13,14,51};
//第三种写法
int[] array1= new int[]{1,2,3,4,5};
二.下标
数组的下标是从0开始的,0就是第一位。
int[] array = {1,2,3,4,5};
//输出的结果就是1
System.out.println(array[0]);
三.打印数组
int[] array = {1,2,3,4,5};
System.out.println(Arrays.toString(array));
//输出的结果为[1,2,3,4,5]
四.排序
1.正序排序
int[] array = {2,1,8,4,6};
//Arrays.sort就是排序
Arrays.sort(array);
System.out.println(Arrays.toString(array));
//输出的结果为[1,2,4,6,8]
2.倒序排序
int[] array = {2,1,8,4,6};
Arrays.sort(array);
for (int i = 0; i < array.length / 2; i++) {
int t = array[i];
array[i] = array[array.length - 1 - i];
array[array.length-1-i] = t;
}
System.out.println(Arrays.toString(array));
//输出的结果为[8,6,4,2,1]
3.冒泡排序
int num = 0;
int[] age = {18,20,15,60,24};
for (int i = 0; i < age.length - 1; i++) {
for (int j = 0; j < age.length - 1 - i; j++) {
if (age[j] > age[j+1]){
num = age[j+1];
age[j+1] = age[j];
age[j] = num;
}
}
}
System.out.println(Arrays.toString(age));
//运行的结果是[15, 18, 20, 24, 60]
五.数组求和
Scanner in = new Scanner(System.in);
int[] array = new int[5];
int num = 0;
// array.length获取数组长度
for (int i = 0; i < array.length; i++) {
System.out.println("请输入第" +i + "个元素的值");
array[i] = in.nextInt();
//计算总和
num += array[i];
}
System.out.println(Arrays.toString(array));
//计算平均值
System.out.println(num/array.length);
System.out.println(num% array.length);
六.数组最大值与最小值
int[] array = {5,9,2,4,8};
//给默认最大值
int max = array[0];
//给默认最小值
int min = array[0];
for (int i = 0; i < array.length; i++) {
//判断最大值
if (max < array[i]){
//给最大值赋值
max = array[i];
}
//判断最小值
if (min > array[i]){
//给最小值赋值
min = array[i];
}
}
System.out.println(max + "----" + min);
//排序sort
Arrays.sort(array);
System.out.println(Arrays.toString(array));
//从最大下标到最小下标输出
for (int i = array.length - 1; i >= 0 ; i--) {
System.out.println(array[i]);
}
七.数组的扩容,位移与插入
Scanner in = new Scanner(System.in);
int[] array = {5,1,3,6,9};
//排序
Arrays.sort(array);
System.out.println("排序后的数组" + Arrays.toString(array));
//扩容copyOf
int[] newArray = Arrays.copyOf(array, array.length + 1);
System.out.println("扩容后的数组"+Arrays.toString(newArray));
System.out.println("请输入您要插入的元素");
//新元素
int num = in.nextInt();
//新元素应该在的下标
int index = -1;
//判断num应该往哪里放
for (int i = 0; i < newArray.length; i++) {
if (num < newArray[i]){
index = i;
break;
}else {
index = newArray.length - 1;
}
}
//位移
if (index != newArray.length - 1){
for (int i = newArray.length - 2; i >= index ; i--) {
newArray[i+1] = newArray[i];
}
System.out.println("完成位移之后的数组" + Arrays.toString(newArray));
}
//插入
newArray[index] = num;
System.out.println("把新元素放进去的数组" + Arrays.toString(newArray));