java数组交集,Java数组的交集

Java数组的插花、并集,java数组交集

// 求五个数组的混杂
public static int[] SameOfTwoArrays(int[] arr1, int[] arr2) {
  //
新建叁个空数组,用于存储交集,空数主管度应为多个数组中小小的的。
  int temp[] = new int[arr1.length < arr2.length ? arr1.length :
arr2.length];
  // 定义一个int的变量,初叶值为0;用于交集数组的自扩展美元素
  int k = 0;
  //
第一层for循环的效果与利益是:遍历获取多个数组中的某叁个要素。尽管从功效上来管理,应该遍历很短的百般数组
  for (int i = 0; i < arr1.length; i++) {
    // 第二层for循环,遍历获取另三个数组的因素
    for (int j = 0; j < arr2.length; j++) {
      // 把八个数组中遍历出来的成分举行相比较
      if (arr1[i] == arr2[j]) {
        //
假使三个因素相等,就存入交集数组中,交集数组的index需求自拉长,以便存放下一个等于成分
        temp[k++] = arr1[i];
        //
把第二层循环中的当前找到的与第一层循环相等的要素地点存放如数组最终叁个要素
        arr2[j] = arr2[arr2.length – 1];
        // 删除最终三个要素
        arr2 = Arrays.copyOf(arr2, arr2.length – 1);
        // 截止此次内循环
        break;
      }
    }
  }
  return Arrays.copyOf(temp, k);
}

// 求七个数组的并集

public static int[] mergeArrays(int[] arr1, int[] arr2) {

  //
新建一个空数组,用于存款和储蓄交集,空数CEO度应为八个数组的长度之和。
  int[] temp = new int[arr1.length + arr2.length];

  //将四个数组拷贝到temp数组
  System.arraycopy(arr1, 0, temp, 0, arr1.length);
  System.arraycopy(arr2, 0, temp, arr1.length, arr2.length);

  //第一层循环,遍历到第一个数组的末尾
  for (int i = 0; i < arr1.length; i++) {

    //第二层循环,从首个数组开头遍历
    for (int j = arr1.length; j < temp.length; j++) {

      //假设第4个数组的因素等于第一个数组的要素,就删除第贰个数组的该因素
      if (temp[i] == temp[j]) {

        //将第三个数组的成分放到temp数组的尾声
        temp[j] = temp[temp.length – 1];

        //删除最终三个元素
        temp = Arrays.copyOf(temp, temp.length – 1);
        break;
      }
    }
  }
  Arrays.sort(temp);
  return temp;
}

 

//
求四个数组的混杂 public static int[] SameOfTwoArrays(int[] arr1,
int[] arr2) { // 新建多个空数组,用于存款和储蓄交集…

// 求四个数组的犬牙相制
public static int[] SameOfTwoArrays(int[] arr1, int[] arr2) {
  //
新建一个空数组,用于存款和储蓄交集,空数经理度应为五个数组中型小型小的的。
  int temp[] = new int[arr1.length < arr2.length ? arr1.length :
arr2.length];
  // 定义一个int的变量,开首值为0;用于交集数组的自扩展澳成分
  int k = 0;
  //
第一层for循环的成效是:遍历获取五个数组中的某三个要素。要是从成效上来管理,应该遍历异常的短的不胜数组
  for (int i = 0; i < arr1.length; i++) {
    // 第二层for循环,遍历获取另三个数组的成分
    for (int j = 0; j < arr2.length; j++) {
      // 把五个数组中遍历出来的成分进行相比
      if (arr1[i] == arr2[j]) {
        //
假如五个因素相等,就存入交集数组中,交集数组的index供给自增进,以便贮存下一个也便是成分
        temp[k++] = arr1[i];
        //
把第二层循环中的当前找到的与第一层循环相等的因素地点寄存如数组最后三个要素
        arr2[j] = arr2[arr2.length – 1];
        // 删除最终三个要素
        arr2 = Arrays.copyOf(arr2, arr2.length – 1);
        // 甘休本次内循环
        break;
      }
    }
  }
  return Arrays.copyOf(temp, k);
}

  //将多少个数组拷贝到temp数组
  System.arraycopy(arr1, 0, temp, 0, arr1.length);
  System.arraycopy(arr2, 0, temp, arr1.length, arr2.length);

      //假如第三个数组的成分等于第三个数组的因素,就删除第2个数组的该因素
      if (temp[i] == temp[j]) {

  //第一层循环,遍历到第一个数组的尾声
  for (int i = 0; i < arr1.length; i++) {

 

public static int[] mergeArrays(int[] arr1, int[] arr2) {

发表评论

电子邮件地址不会被公开。 必填项已用*标注