取两个已排序数组的交集

public class t{
 private int[] a={0,1,3,3,5,7,9};//去比较
 private int[] b={-1,0,2,3,4,5,9,9,10};//被比较
 private int[] c=null;
 public t(){
  c=jiaoJi(a,b);
  print(); //打印
 }
 
 public int[] jiaoJi(int[] a,int[] b){ //处理交集函数
  //确定 中间变量数组 jj 的数组大小,其大小为,a,b两数组较小的数组大小
  int size;
  if (a.length>b.length){
   size=b.length;
  }else{
   size=a.length;
  }
                //建立中间变量数组 jj
  int [] jj=new int [size];
  for (int i=0;i<size;i++){ //赋值
   jj[i]=0;
  }
  int k=0;//记录交集元素插入到jj数组的位置
  int e=0;//记录 下一次比较的开始位置
  for (int i=0;i<a.length;i++){
   for (int j=e;j<b.length;j++){
    if (a[i]==b[j]){
     jj[k++]=a[i]; //存储交集元素,数组jj 下标 k 加一
     e=j+1; //记录 下一次比较的开始位置,既从j后面的元素开始
     break;//跳出for循环
    }
   } 
  }
  
  int [] zzjj=new int[k]; //根据K建立交集的是数组zzjj
  for (int i=0;i<k;i++){
   zzjj[i]=jj[i];
  }
  return zzjj;
 }

 public void print(){//打印
  for(int i=0;i<c.length;i++){
   System.out.print(c[i]+", ");
  }
  System.out.println();
 }

 public static void main(String args[]){
  new t(); 
 }
 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值