public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("输入五个整数");
int num = sc.nextInt();
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = sc.nextInt();
int num4 = sc.nextInt();
double num5 = (num+num1+num2+num3+num4)/5; // 五个数的平均值
double vari = 0;
vari += (num-num5)*(num-num5);
vari += (num1-num5)*(num1-num5);
vari += (num2-num5)*(num2-num5);
vari += (num3-num5)*(num3-num5);
vari += (num4-num5)*(num4-num5);
vari =vari/5;
System.out.println(vari);
这种方法十分死板,如果是十个数、一百个数,定义的变量会特别的多,代码会一直的重复
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入五个整数");
int [] a = new int[5];
int sum =0;
for (int i =0;i<a.length;i++) { //循环数组得到输入的值
a[i] = sc.nextInt();
sum += a[i];
}
double avg=sum/5.0;
double vari = 0;
for (int i = 0;i<a.length;i++){
vari += (a[i]-avg*a[i]-avg);
}
vari=vari/5.0;
System.out.println("方差是 "+vari);
}
数组和循环的配合,可以使解题方法更为灵活,且不需要定义过多的变量。
数组的遍历:访问到数组中的每一个元素,并且可以对每一个元素进行一系列的操作:
数组的遍历,方法一: i为下标 有条件的遍历
int [] a = {2,4,6,8,10};
for (int i =0;i<a.length;i++){
System.out.print(a[i]+" ");
}
方法二: foreach遍历 i代表数组里每一个元素 全部遍历
int [] a = {2,4,6,8,10};
for (int i : a){
System.out.print(i+" ");
}
方法二可以不用去理解,就是相当于方法一的简化,但是两者有一定的区别,一可以控制遍历的区间和步长,方法二只能将所有的元素都进行遍历。
常见的查找方法:
第一种顺序查找,也就是
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,18,20};
int index = find(arr,num);
if (index==-1) {
System.out.println("找不到!");
}else {
System.out.println(index);
}
}
public static int find(int [] arr,int num){
int count = 0;
for (int i :arr){
if (i==num){
teturn count;
}
count++;
}
return -1;
}
顺序查找 弊端:数据量大的时候,在最差的情况下,计算机的负载也非常的大。效率低。
折半查找:(二分查找法):优化了查找的效率。
弊端: 数组必须有顺序 经过排序。
public static int find1(int [] arr,int num){
int star = 0;
int end = arr.length-1;
while(star <= end){
int mid = (star+end)/2;
if (arr[mid] == num){
return mid;
}
if (arr[mid] > num){
end = mid-1;
}else {
star = mid+1;
}
}
return -1;
}
}