[자료구조] 버블 정렬

TASON·2021년 6월 23일
1

자료구조

목록 보기
1/2

버블 정렬

  • 인접한 두 개의 원소를 비교하며 자리를 계속 교환하며 정렬

정렬 과정

  • 첫 번째 원소부터 인접한 원소끼리 계속 자리를 교환하면서 맨 마지막 자리까지 이동
  • 한 단계가 끝나면 가장 큰 원소가 마지막 자리로 정렬
  • 교환하며 자리를 이동하는 모습이 물 위에 올라오는 거품 모양과 같다고 하여 버블 정렬

시간 복잡도

: O(n**2)


예시

arr = [3, 4, 2, 1, 0]

N = len(arr)

# arr[0]부터 arr[i-1]까지 중 가장 큰 수를 맨 뒤로 보낼거야
for i in range(N-1, 0, -1):
    # arr[j]와 그 다음 값을 비교할 거야
    for j in range(i):
        if arr[j] > arr[j+1]:
            arr[j], arr[j+1] = arr[j+1], arr[j]

첫번째 i => arr[0]부터 arr[3]까지

두번째 for문 ⇂arr[0]arr[1]arr[2]arr[3]arr[4]
첫번째 j3 (j)4 (j+1)210
결과34
두번째 j34 (j)2 (j+1)10
결과24
세번째 j324(j)1 (j+1)0
결과14
네번째 j3214 (j)0 (j+1)
결과04

두번째 i => arr[0]부터 arr[2]까지

두번째 for문 ⇂arr[0]arr[1]arr[2]arr[3]arr[4]
첫번째 j3 (j)2 (j+1)104
결과23
두번째 j23 (j)1 (j+1)04
결과13
세번째 j213 (j)0 (j+1)4
결과03

세번째 i => arr[0]부터 arr[1]까지

두번째 for문 ⇂arr[0]arr[1]arr[2]arr[3]arr[4]
첫번째 j2 (j)1 (j+1)034
결과12
두번째 j12 (j)0 (j+1)34
결과02

네번째 i => arr[0]부터 arr[1]까지

두번째 for문 ⇂arr[0]arr[1]arr[2]arr[3]arr[4]
첫번째 j1 (j)0 (j+1)234
결과01

최종 결과

arr = [0, 1, 2, 3, 4]

arr[0]arr[1]arr[2]arr[3]arr[4]
01234
profile
프론트엔드 개발자 / iOS 개발 스터디 중

0개의 댓글