인프런 커뮤니티 질문&답변
C++를 사용하지 않고 문제를 해결하고싶습니다.
작성
·
194
0
문제에서 sort함수를 이용하여 정렬을 해주는데
만약 C++ 함수들을 사용하지 않고 C로만 문제를 해결하려고 하는데 방법이 있을까요?
#include<stdio.h>
#include<math.h>
#include <stdlib.h>
#define MAX(x, y) x > y ? x : y
int main(void)
{
int s,n,m,a,i,j,pos=0;
scanf("%d",&n);
int *arr=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
scanf("%d",&m);
int *brr=(int*)malloc(sizeof(int)*m);
for(i=0;i<m;i++)
{
scanf("%d",&brr[i]);
}
int *sum=(int*)malloc(sizeof(int)*MAX(n,m));
int left=0,right=0;
while(left<n && right<m)
{
if(arr[left]==brr[right])
{
sum[pos++]=arr[left++];
right++;
}
else if(arr[left]<brr[right])
{
left++;
}
else if(arr[left]>brr[right])
{
right++;
}
}
for(i=0;i<pos;i++)
{
printf("%d ",sum[i]);
}
free(arr);
free(brr);
free(sum);
return 0;
}
저는 이 부분에서 정렬을 하지못하여 막혀있습니다.
퀴즈
선택 정렬(Selection Sort) 알고리즘은 각 단계에서 어떤 작업을 수행하여 배열을 정렬하나요?
인접한 두 요소를 비교하여 필요시 교환합니다.
정렬되지 않은 부분에서 가장 작은(또는 큰) 값을 찾아 정렬된 부분의 올바른 위치로 옮깁니다.
현재 요소를 이미 정렬된 부분 배열의 적절한 위치에 삽입합니다.
배열을 분할하고 각 부분을 재귀적으로 정렬한 후 병합합니다.





