링크 : https://www.acmicpc.net/problem/1377
버블 소트 알고리즘을 다음과 같이 C++로 작성했다.
bool changed = false;
for (int i=1; i<=N+1; i++) {
changed = false;
for (int j=1; j<=N-i; j++) {
if (A[j] > A[j+1]) {
changed = true;
swap(A[j], A[j+1]);
}
}
if (changed == false) {
cout << i << '\n';
break;
}
}
위 소스에서 N은 배열의 크기이고, A는 정렬해야 하는 배열이다. 배열은 A[1]부터 사용한다.
위와 같은 소스를 실행시켰을 때, 어떤 값이 출력되는지 구해보자.
시간 초과
import sys
input = sys.stdin.readline
n = int(input())
array = [int(input()) for _ in range(n)]
flg = False
for i in range(1, n+2):
flg = False
for j in range(n-i):
if array[j] > array[j+1]:
flg = True
array[j], array[j+1] = array[j+1], array[j]
if flg == False:
print(i)
break