#include <stdio.h>
int getIndex(int a[], int low, int high)
{
int tmp = a[low];
while(low < high) {
while(low < high && a[high] >= tmp)
high--;
a[low] = a[high];
while(low < high && a[low] <= tmp)
low++;
a[high] = a[low];
}
a[low] = tmp;
return low;
}
void qsort(int a[], int low, int high)
{
if(low < high) {
int index = getIndex(a, low, high);
qsort(a, low, index - 1);
qsort(a, index + 1, high);
}
}
int main()
{
int a[100], b[100];
int t[100];
int n, m;
while(scanf("%d%d", &n, &m)) {
if(n == 0 && m == 0)
break;
int i, j = 0, k = 0;
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
for(i = 0; i < m; i++)
scanf("%d", &b[i]);
qsort(a, 0, n - 1); qsort(b, 0, m - 1);
// for(i = 0; i < n; i++)
// printf("%d", a[i]);
// for(i = 0; i < m; i++)
// printf("%d", b[i]);
for(i = 0; i < n; i++) {
if(j == m) {
while(i < n) {
t[k++] = a[i++];
}
}
while(j < m) {
if(a[i] > b[j]) j++;
else if(a[i] == b[j]) {j++; break;}
else {t[k] = a[i];k++;break;}
}
// if(j == m) { //如果放在这里的话,那么当a[n] == b[m]时,a[n - 1]也会放入t
// while(i < n) {
// t[k++] = a[i++];
// }
// }
}
if(k == 0)
printf("NULL\n");
else {
for(i = 0; i < k; i++)
printf("%d ", t[i]);
printf("\n");
}
}
return 0;
}
总结
复习了一下快速排序