为什么要用到数组及遍历数组和数组里数据的查找方法

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;
  }

}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 代码如下: ``` #include <stdio.h> int main() { int a[50], b[50]; int n, m, i, j; // 输入数组a的元素个数和每个元素的值 printf("请输入数组a的元素个数:"); scanf("%d", &n); printf("请输入数组a的元素:"); for (i = ; i < n; i++) { scanf("%d", &a[i]); } // 输入数组b的元素个数和每个元素的值 printf("请输入数组b的元素个数:"); scanf("%d", &m); printf("请输入数组b的元素:"); for (i = ; i < m; i++) { scanf("%d", &b[i]); } // 查找同时在数组a和数组b中的全部元素 printf("数组a和数组b中的全部元素为:"); for (i = ; i < n; i++) { for (j = ; j < m; j++) { if (a[i] == b[j]) { printf("%d ", a[i]); break; } } } printf("\n"); return ; } ``` <br>### 回答2: 题目要求我们定义最大下标为50的整型数组a和b,然后查询同时在数组a和数组b中的全部元素。我们可以根据这个要求写出以下代码: ```c++ #include <iostream> using namespace std; int main() { int a[51], b[51]; int n, m, i, j; bool flag; //输入数组a的元素个数 cin >> n; //输入数组a的每个元素的值 for(i = 0; i < n; i++) cin >> a[i]; //输入数组b的元素个数 cin >> m; //输入数组b的每个元素的值 for(j = 0; j < m; j++) cin >> b[j]; //查找同时在数组a和数组b中的全部元素 flag = false; for(i = 0; i < n; i++) { for(j = 0; j < m; j++) { if(a[i] == b[j]) //如果找到了相同的元素 { cout << a[i] << " "; //输出这个元素 flag = true; //标记已经找到了相同的元素 break; } } } if(!flag) //如果没有找到相同的元素 cout << "没有相同的元素"; return 0; } ``` 在程序中,我们首先定义了两个数组a和b,分别用来存储输入的两个数组。然后分别输入两个数组的元素个数和元素值。接下来,我们使用两层循环,分别遍历数组a和数组b中的每个元素,查找是否存在相同的元素。如果找到了相同的元素,就输出这个元素,并标记已经找到了相同的元素。最后判断是否找到了相同的元素,如果没有找到,就输出提示信息。 以上就是本题的解题思路和代码实现。 <br>### 回答3: 题目要求我们定义两个数组a和b,长度均为50,输入各自元素,并在这两个数组中找到同时存在的元素。我们可以采用两种方法来实现。 第一种方法是遍历两个数组,将元素逐一进行比较,若相同则输出。具体实现步骤如下: 1. 首先输入数组a的元素个数,再输入数组a每个元素的值。 2. 接着输入数组b的元素个数,再输入数组b中各元素的值。 3. 定义两个循环嵌套,遍历数组a和数组b,将每个元素进行比较。 4. 如果发现两个元素相同,则输出这个元素。 5. 如果遍历完后没有找到相同元素,则输出"无相同元素"。 第二种方法是使用哈希表(hash table),先将数组a中的元素存入哈希表中,然后遍历数组b,对于每个元素,我们用哈希表来判断其是否在数组a中出现过。具体实现步骤如下: 1. 首先输入数组a的元素个数,再输入数组a每个元素的值。 2. 定义一个哈希表,将数组a中的元素存入哈希表中。 3. 接着输入数组b的元素个数,再输入数组b中各元素的值。 4. 遍历数组b,对于每个元素,用哈希表来判断其是否在数组a中出现过。 5. 如果发现两个元素相同,则输出这个元素。 6. 如果遍历完后没有找到相同元素,则输出"无相同元素"。 两种方法的时间复杂度均为O(n),其中n为数组的长度。但是第一种方法需要用到两个循环嵌套,实际运行效率可能略低。相比之下,第二种方法中使用了哈希表,判断是否存在的时间复杂度为O(1),因此可能更加高效。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值