Bubble Sort

2023. 5. 10. 14:50· 자료구조 알고리즘/이론
목차
  1. 시간복잡도
  2. 공간복잡도
  3. 장점
  4. 단점
  5. Optimized version
  6.  
  7. References

서로 인접한 두 원소의 대소를 비교, 조건에 맞지 않으면 자리를 교환하며 정렬하는 알고리즘

void bubbleSort(int arr[], int n) {
	int i, j;
    for(i = 0; i < n - 1; i++)
    	for(j = 0; j < n - i - 1; j++)
        	if(arr[j] > arr[j+1])
            	swap(arr[j], arr[j+1]);
def bubbleSort(arr):
	n = len(arr)
    for i in range(n):
    	for j in range(0, n-i-1):
        	if arr[i] > arr[j+1]:
            	arr[j], arr[j+1] = arr[j+1], arr[j]

시간복잡도

모두 O(n^2)

공간복잡도

O(n), 주어진 배열 안에서 swap 사용으로

장점

구현 간단, 직관적

제자리 정렬(in-place sorting), 배열 안에서 교환하는 방식

안정 정렬(stable sort)

단점

비효율적. 시간복잡도 O(n^2)

swap 연산이 많이 일어남(정렬된 자리로 이동을 위해)

Optimized version

array 가 sort 되어있으면 빠져나오도록 처리

def bubbleSort(arr):
	n = len(arr)
    for i in range(n):
    	swapped = False
        for j in range(0, n-i-1):
        	if arr[j] > arr[j+1]:
            	arr[j], arr[j+1] = arr[j+1], arr[j]
                swapped = True
        if swapped == False:
        	break

 

References

https://github.com/GimunLee/tech-refrigerator/blob/master/Algorithm/%EA%B1%B0%ED%92%88%20%EC%A0%95%EB%A0%AC%20(Bubble%20Sort).md#%EA%B1%B0%ED%92%88-%EC%A0%95%EB%A0%AC-bubble-sort

https://www.geeksforgeeks.org/bubble-sort/

 

Bubble Sort Algorithm - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

728x90
반응형

'자료구조 알고리즘 > 이론' 카테고리의 다른 글

Insertion Sort  (0) 2023.05.10
Selection Sort  (0) 2023.05.10
B*Tree  (0) 2023.05.09
B+Tree  (0) 2023.05.09
B-Tree  (0) 2023.05.08
  1. 시간복잡도
  2. 공간복잡도
  3. 장점
  4. 단점
  5. Optimized version
  6.  
  7. References
'자료구조 알고리즘/이론' 카테고리의 다른 글
  • Insertion Sort
  • Selection Sort
  • B*Tree
  • B+Tree
내공얌냠
내공얌냠
내공냠냠
내공얌냠
내공냠냠
내공얌냠
전체
오늘
어제
  • 분류 전체보기 (255) N
    • 개발 (113)
      • mediapipe (16)
      • insightface (5)
      • JongjuAR (3)
    • 자료구조 알고리즘 (79)
      • 코딩테스트 (64)
      • 이론 (15)
    • 공부 (54) N
      • 단행본 (8) N
      • 튜토리얼 (19)
      • 논문 (15)
      • 복기 (5)
    • 참여 (5)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 테디노트 rag 기본편
  • flutter 행사
  • 컴퓨터 비전 책 추천
  • flutter 행사 후기
  • 미디어파이프
  • 테디노트의 랭체인을 활용한 rag 비법노트 기본편
  • flutter tutorial
  • postgresql install in mac
  • 구글 미디어파이프
  • flutter conference
  • 음성인식 기초
  • vscode 스프링 설치
  • ios google places api
  • 플러터
  • 깃 튜토리얼
  • 플러터 튜토리얼
  • 컴퓨터 비전
  • flutter
  • speaker adaptation tts
  • 머신러닝이란
  • python telegrambot
  • 음성인식 튜토리얼
  • 테디노트의 랭체인을 활용한 rag 비법노트 기본편 후기
  • postgresql 재설치
  • 컴퓨터 비전 기초
  • mediapipe translate
  • mediapipe
  • 딥러닝 기반 음성인식 기초
  • google mediapipe
  • git tutorial

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
내공얌냠
Bubble Sort
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.