数组
数组的本质:一串连续的内存空间
- 案例1
public static void main(String[] args) {
System.out.println("请输入五个整数");
Scanner scanner = new Scanner(System.in);
int n1 = scanner.nextInt();
int n2 = scanner.nextInt();
int n3 = scanner.nextInt();
int n4 = scanner.nextInt();
int n5 = scanner.nextInt();
double avg = (n1+n2+n3+n4+n5)/5;
double vari = 0;
vari += (n1-avg)*(n1-avg);
vari += (n2-avg)*(n2-avg);
vari += (n3-avg)*(n3-avg);
vari += (n4-avg)*(n4-avg);
vari += (n5-avg)*(n5-avg);
vari = vari/5;
}
这种方法十分的死板,如果是十个数,一百个数,定义的变量会特别的多,代码的会一直重复
- 案例2:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
[] a = new int [5];
int sum =0;
for (int i = 0;i<a.length;i++){
a[i] = scanner.nextInt();
sum += a[i];
}
double avg = sum/5.0;
int vari = 0;
for (int i = 0;i<a.length;i++){
vari += (a[i] -avg)*(a[i]-avg);
}
vari = vari/5;
System.out.println("方差是"+vari);
}
}
数组和循环的配合,可以使解题方法更为灵活,且不需要定义过多的变量。
数组的遍历
数组的遍历:访问到数组中的每一个元素,并且可以对每一个元素进行一系列的操作:
方法一:package 课件案例;
public static void main(String[] args) {
int[] a = {2,4,6,8,10};
for (int i =0;i<a.length;i++){
System.out.printf(a[i]+"");
}
}
数组的遍历 foreach方法二:
for (int i : a){
System.out.printf(i+"");
}
方法二可以不用去理解。他就相当于方法一的简化写法,但是两者有一定的区别,方法一可以控制遍历的区间和步长,而方法二只能将所有的元素都进行遍历。
常见的查找方法:
1.顺序查找,也就是按顺序一位一位的查找。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int[] arr = {2, 4, 6, 8, 10, 12, 14, 16};
int index = find(arr,num);
if (index == -1){
System.out.println("找不到");
}else {
System.out.println(index);
}
}
/**
* 查找数组中的下标
* @param arr
* @param num
* @return
*/
public static int find(int[] arr, int num) {
int count = 0;
for (int i : arr) {
if (i == num) {
return count;
}
count++;
}
return -1;
}
弊端:数据量大的时候。在最差的情况 下。计算机的负载也非常的大,效率低。
折半查找:(二分查找):优化了查找的效率。
数组的排序
方法一:冒泡排序
方法二:选择排序