题目:一个有序数组A,另一个有序数组B,都是从小到大排序。请打印A中的所有不在B中的数
package myTest.classA;
public class Test01_外排法查找 {
/*
一个有序数组A,另一个有序数组B,都是从小到大排序。请打印A中的所有不在B中的数
*/
public static void main(String[] args) {
int[] a={2,3,5,6,8,10,11,12};
int[] b={2,4,5,7,9,11};
int[] b1={1,2,5,8,11,12};
int[] b2={2,9,10,17,89};
int[] b3={1,10};
waiPai(a,b);
waiPai(a,b1);
waiPai(a,b2);
waiPai(a,b3);
/*输出结果:
2 3 6 8 10 12
3 6 10
3 5 6 8 11 12
2 3 5 6 8 11 12
*/
}
public static void waiPaiAndPrint(int[] A,int[] B){
int result=0;
//A B 数组的两个指针,从左往右移动
int i=0;
int j=0;
while(i<A.length && j<B.length){
if(A[i]<B[j]){
System.out.print(A[i]+" ");
i++;
} else if (A[i] == B[j]) {
i++;
}else{
j++;
}
//B数组已经走完了 ,打印剩下的A数组元素
if(j==B.length){
for(int k=i;k<A.length;k++){
System.out.print(A[k]+" ");
}
}
}
System.out.println();
}
}
假设两数组的长度是M和N,时间复杂度O(M+N)