数组
为什么需要数组
声明一个变量就是在内存空间划出一块合适的空间
声明一个数组就是在内存空间划出一串连续的空间
数组的基本要素
标识符–>数组名
数组元素 -->值
元素下标:从0开始
元素类型 -->类型
如何使用数组
1.声明数组
2.分配空间
3.赋值
4.处理数据
初始化数组的一些小细节
- 声明数组时不规定数组长度
- 数组元素根据类型不同,有不同的初始值
- 赋值方法1: 边声明边赋值
int[ ] scores = {89, 79, 76};
int[ ] scores = new int[ ]{89, 79, 76};
- 赋值方法2:动态地从键盘录入信息并赋值
Scanner input = new Scanner(System.in);
for(int i = 0; i < 30; i ++){
scores[i] = input.nextInt();
}
!!!注意!!!创建数组并赋值的方式必须在一条语句中完成,不然会编译报错!
增删查改
找最大值
max = stu[0] ;
if (stu[1]>max ){
max=stu [1] ;
}
if (stu[2]>max ){
max=stu [2] ;
}
if (stu[3]>max ){
max=stu [3] ;
}
设置一个名为max的变量,只要数组中存在有比它大的数据,就将max的值替换为它,所以最后max的结果一定是这个数组中最大的。
插入数据
import java.util.Arrays;
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] a={99,85,82,63,60};
int[] b=new int[6];
for (int i = 0; i < a.length; i++) {
b[i]=a[i];
}
System.out.println(Arrays.toString(b));
System.out.println("请输入一个数:");
int num = input.nextInt();
boolean isInsert=false;
for (int i=a.length-1;i>=0;i--){
if(num>b[i]){
b[i+1]=b[i];//下标后移
}else{
b[i+1]=num;
isInsert=true;
break;
}
}
if(!isInsert){
b[0]=num;
}
for (int i = 0; i < b.length; i++) {
System.out.print(b[i]+" ");
}
}
}
删除数据
import java.util.Arrays;
import java.util.Scanner;
public class Demo4_1 {
public static void main(String[] args) {
int[] a = {99,85,82,63,60};
int[] b = new int[4];
Scanner input = new Scanner(System.in);
System.out.println("请输入要删除的下标:");
int num = input.nextInt();
int j = 0;
for (int i = 0; i < a.length; i++) {
if(i==num)continue;
b[j]=a[i];
j++;
}
System.out.println(Arrays.toString(a));
for (int i = 0; i < j; i++) {
System.out.print(b[i]+" ");
}
}
}
两种排序
选择排序
import java.util.Arrays;
public class Demo6 {
public static void main(String[] args) {
/*选择排序逻辑:
从前向后对每一个下标对应的元素作为基准位
与后面所有的元素进行比较,找出最小值
与当前下标的元素进行交换
进行下一次循环*/
int[] a={1,3,2,5,8,4};
for (int i = 0; i < a.length-1; i++) {
int min = a[i];
int tmp = i;
for (int j = i+1; j < a.length; j++) {
if(a[j]<min){
min=a[j];
tmp = j;
}
}
a[tmp] = a[i];
a[i]=min;
}
System.out.println(Arrays.toString(a));
}
}
插入排序
import java.util.Arrays;
public class Demo7 {
public static void main(String[] args) {
/*
* 逻辑:从第二位开始,向前比较,进行插入排序
*/
int[] a={1,3,2,5,8,4};
for (int i = 1; i < a.length; i++) {
int tmp = a[i];
boolean isInsert = false;
for (int j = i-1; j >=0 ; j--) {
if (tmp<a[j]){
a[j+1]=a[j];//如果遇到比自己大的,大的值就后移
}else{
a[j+1]=tmp;//如果遇到比自己小的,就在后方插入
isInsert = true;
break;
}
}
//如果一直没插入,就插入在首位
if(!isInsert){
a[0]=tmp;
}
}
System.out.println(Arrays.toString(a));
}
}