#include <stdio.h>
#define MAX_SIZE 6
#define SWAP(x, y, t) ( (t)=(x), (x)=(y), (y)=(t) )
int list[MAX_SIZE]={ 1, 2, 4, 3, 5, 6};
int n, sw=0, count=0;
void bubble_sort(int list[], int n)
{
int i, j, temp;
for(i=n-1; i>0; i--) {
for(j=0; j<i; j++)
if(list[j] > list[j+1])
{
sw=1; // 여기 sw=1 설정
SWAP(list[j], list[j+1], temp);
}
if(sw==0) // sw=0라고 했는데 어떻게 해서 0으로 변하게 되나요???????????????
break;
sw=0;
count++;
}
}
void main()
{
int i;
n = MAX_SIZE;
bubble_sort(list, n);
printf("비교횟수: %d \n", count);
for(i=0; i<n; i++)
printf("%d ", list[i]);
printf("\n");
}
첨에 0이고 돌다가 1되고 1이면 break 안걸려서 0됨
2번째 포문에서 sw=1인데 여기를 거치지않고 다시 1번째 for문가서 바로 if로 가게 되면 이때 sw가 0인가요?
아니지 두번째에서 나올때는 항상 0이지 루프를 잘봐봐
그럼 if문 {} 빠져나오면 sw=1 맞죠?