#include <stdio.h>
#include <stdlib.h>
/*
* in 배열의 앞에서부터 n개의 값을 out 배열에 복사한 후
* out 배열을 오름차순으로 정렬한다.
*
* 주의: 원본 배열 in의 값은 변경하지 않는다.
*/
void copyAndSort(int in[], int n, int out[])
{
int i, j, temp;
/* 원본 배열을 out 배열에 복사 */
for (i = 0; i < n; i++) {
out[i] = in[i];
}
/* out 배열을 오름차순으로 정렬: 버블 정렬 */
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (out[j] > out[j + 1]) {
temp = out[j];
out[j] = out[j + 1];
out[j + 1] = temp;
}
}
}
}
int compare(int a[], int b[], int n){
int i, diff, *p, *q;
if(n<=0) return 0;
p = malloc(n*sizeof(int));
q = malloc(n*sizeof(int));
copyAndSort(a,n,p);
copyAndSort(b,n,q);
for(diff=i=0; i<n; i++)
if(p[i] != q[i]){
diff = p[i] - q[i];
break;
}
free(p), free(q);
return diff;
}
int uniques(int a[], int n){
int i,count = 0;
if(n>0){
int *p = malloc(n*sizeof(int));
copyAndSort(a,n,p);
/* count=0은 사용하지않고, count++로 인해 1증가된 값부터 사용 */
for(count++, i=1; i<n; i++)
if(p[i-1]!= p[i])
count++;
free(p);
}
return count;
}
int main() {
int a[] = {7,3,3,8,2,7,3,3,5,2};
int b[] = {3,8,2,5,7,3};
int c[] = {2,3,7,3,7,5,3,3,3,8};
printf("%d %d\n", compare(a,b,6), uniques(a,10));
printf("%d\n", compare(a,c,10));
}
To embed this project on your website, copy the following code and paste it into your website's HTML: