내림차순 정렬을 선택 정렬로 구현하는 과제를 하고 있습니다

case1

int most;            // most를 쓰는 경우의 내림차순 선택정렬

    for (int i = 0; i < size - 1; i++)

    {

        most = i;

        for (int j = i + 1; j < size; j++)

            if (scores[i] < scores[j])

            {

                most = j;

                tmp = scores[i];

                scores[i] = scores[most];

                scores[most] = tmp;

            }

    }

if문에 괄호가 있을 때와

case2

int most;            // most를 쓰는 경우의 내림차순 선택정렬

    for (int i = 0; i < size - 1; i++)

    {

        most = i;

        for (int j = i + 1; j < size; j++)

            if (scores[i] < scores[j])

                most = j;

            tmp = scores[i];

            scores[i] = scores[most];

            scores[most] = tmp;

    }

이렇게 괄호가 없을 때 구조상으로 차이가 있나요?

30, 56, 23, 96, 83

case1의 경우는 배열끼리 비교해서 if가 참인 경우에만 배열끼리의 값을 교환할 것이고

case2의 경우는 if가 거짓이어도 배열끼리의 값을 교환할 것인데요

하지만 어차피 case2에서는 most = i이기 배열끼리의 값 교환이 자기 자신과의 교환이라서 상관이 없지 않나요?

그런데 실제로 실행해보면 

case1은 { 90, 62 42, 39, 15 } 와 같이 정상적으로 나오고

case2는 { 39, 90, 62, 42, 15} 와 같이 조금 문제가 있어요.

괄호 있을 때와 없을 때 무슨 차이인지 모르겠네요..