버블 정렬(Bubble Sort)

Hyun·2023년 3월 31일
0

알고리즘

목록 보기
5/10

버블 정렬은 매우 간단한 정렬이지만 어떻게 설정하느냐에 따라서 수행횟수가 달라질 수 있다. 매번 수행될때마다 마지막에 위치한 배열의 원소가 정렬된다는 특징을 갖는다.

첫번째 방식은 위 특징을 고려하지 않고 매번 수행때마다 처음부터 끝까지 모두 비교한 방법이다.

arr = [3,6,1,2,9,0,35,12]
count = 0

def bubbleSort(A):
    global count
    for i in range(0,len(A)-1):#n-1(0~n-2)번 수행
        for j in range(0, len(A)-1):#n-1번 수행 
            count += 1
            if A[j] > A[j+1]:
                A[j], A[j+1] = A[j+1], A[j]
                

bubbleSort(arr)

print(arr);
print("%d" %count)
//[0, 1, 2, 3, 6, 9, 12, 35]
//49번 수행

두번째 방식은 매번 마지막 원소가 정렬된다는 특징을 고려하여 작성한 방법이다.

arr = [3,6,1,2,9,0,35,12]
count = 0

def bubbleSort(A):
    global count
    for i in range(0,len(A)-1):#n-1(0~n-2)번 수행
        for j in range(0, len(A)-1-i):#순차적으로 n-1, n-2, ..., 2, 1번 수행
            count += 1
            if A[j] > A[j+1]:
                A[j], A[j+1] = A[j+1], A[j]
                

bubbleSort(arr)

print(arr);
print("%d번 수행" %count)
//[0, 1, 2, 3, 6, 9, 12, 35]
//28번 수행

수행횟수가 꽤 차이나는 것을 확인할 수 있다. 버블 정렬의 시간복잡도는 두 방식 모두 최선, 평균, 최악 모두 O(n^2) 이다.

profile
better than yesterday

0개의 댓글