
전시장 하는 중...
#include<stdio.h>
int ar[300000]={0};
int mo[300000]={0};
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int n,m;
int temp=0;
int i,j,k;
scanf("%d %d",&n,&m);
for(i=0;i<n;i++)
{
scanf("%d %d",&ar[i],&mo[i]);
}
for(i=0;i<n-1;i++)
{
for(j=n-1;j>i;j--)
{
if(ar[j]<ar[j-1]);
{
temp=ar[j];
ar[j]=ar[j-1];
ar[j-1]=temp;
temp=mo[j];
mo[j]=mo[j-1];
mo[j-1]=temp;
}
}
for(i=0;i<n;i++)
{
printf("%d %d\n ",ar[i]);
}
}
return 0;
}
일단 정렬 결과를 보려고 printf를 썼는데
input은
6 4
15 80
8 230
10 100
17 200
20 75
26 80
output은
6 4
8 230
10 100
15 80
17 200
20 75
26 80
이렇게 나와야 되는데
26 80
15 80
8 230
10 100
17 200
20 75
이렇게 나와요...
뭐가 잘못됬나요...
전 선생님은 아니지만 답변해드리겠습니다.
코드를 보니 Bubble Sort를 사용하시려고 하는 것 같군요.
이중 for문을 사용하실 때, 변수 j에 대한 for문을 한 번 거친 후 바로 출력 과정이 있습니다. 그렇죠?
그리고 이 과정에서 변수를 이중 for문의 맨 처음 for문 변수 i를 또 사용하고 있습니다.
이 경우 처음부터 끝까지 하나씩 줄여가면서 교환 과정을 거치는 것이 아니라 딱 한 번만 반복 교환 과정을 수행하게 됩니다.
이 점을 해결하시면 해결될 듯합니다. ㅎㅎ 새로운 변수 k를 설정하여 출력한다던지,
아니면 출력은 정렬이 모두 끝난 다음, 즉 이중 for문을 벗어난 다음에 하실 것을 권장합니다.