for (int i = 0; i < count; i++) // 요소의 개수만큼 반복 { for (int j = 0; j < count - 1; j++) // 요소의 개수 - 1만큼 반복 { if (arr[j] > arr[j + 1]) // 현재 요소의 값과 다음 요소의 값을 비교하여 { // 큰 값을 temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; // 다음 요소로 보냄 } } }

거품 정렬 알고리즘의 규칙은 다음과 같습니다.

  • 처음부터 끝까지 요소를 순회하면서 모든 요소를 비교
  • 현재 값과 다음 값을 비교하여 큰 값을 다음으로 보냄(오름차순)

정렬이 되어있다면 n-1번만 체크한다는 게 이해가 안됨


예를 들어 count가 5 ( 요소가 5개 )  {1,2,5,4,3} 이렇게 있을 때

0번1번 요소는 정렬이 되어있으니까 뒤에꺼만 본다는 소린데


i


j


0 1 비교

1 2 비교

2 3 비교

3 4 비교


0 1 비교

1 2 비교

2 3 비교

3 4 비교


0 1 비교

1 2 비교

2 3 비교

3 4 비교


0 1 비교

1 2 비교

2 3 비교

3 4 비교


0 1 비교

1 2 비교

2 3 비교

3 4 비교


이렇게 되는거 아니야?


애초에 반복문이 돌아가고 if문으로 계속 비교하는데

정렬이 되어있다면 생략한다는 게 무슨 소린지 모르겠는데


저 코드에 뭔가를 추가해야되는건가?