[Algorithm] Bubble Sort (거품 정렬)

2022. 6. 10. 09:00· CS/[ALGORITHM]
목차
  1. 1. 정의
  2. 2. 동작 과정
  3. 3. 장단점
  4. 4. 코드 (오름차순)
  5. ※ 참고

[Algorithm] Bubble Sort (거품 정렬)

 

1. 정의

  • 서로 인접한 두 원소의 대소를 비교하고, 더 큰 원소를 뒤로 보내서 정렬하는 알고리즘
  • 시간 복잡도
    • 최선 : $O(n^2)$
    • 평균 : $O(n^2)$
    • 최악 : $O(n^2)$



2. 동작 과정

  1. 첫 번째 원소와 두 번째 원소의 대소를 비교하여 첫 번째 원소가 더 크다면 두 원소의 위치를 바꾼다.
  2. 두 번째 원소와 세 번째 원소의 대소를 비교하여 두 번째 원소가 더 크다면 두 원소의 위치를 바꾼다.

​ ...

n - 1. (n - 1) 번째 원소와 n 번째 원소의 대소를 비교하여 (n - 1) 번째 원소가 더 크다면 두원소의 위치를 바꾼다.

→ 이런식으로 탐색 시작 범위를 하나씩 증가시키며 정렬을 진행한다.



3. 장단점

  • 장점
    • 구현이 매우 간단, 소스가 직관적
    • 안정 정렬(Stable Sort)
    • 제자리 정렬(in - place sorting)
  • 단점
    • 비효율적



4. 코드 (오름차순)

void bubbleSort(int[] arr) {
  for (int i = 0; i < arr.length; i++) {
    for(int j = i + 1; j < arr.length; j++) {
      if (arr[j - 1] > arr[j]) {
        swap(arr, j - 1, j);
      }
    }
  }
}

void swap(int[] arr, int first, int second) {
  int tmp = arr[second];
  arr[second] = arr[first];
  arr[first] = tmp;
}




※ 참고

  • tect-refrigerator 거품 정렬(Bubble Sort)
  • 정렬 알고리즘 6개 정리 - Jinhyy
  • [알고리즘] 버블 정렬 알고리즘 (Bubble Sort)
저작자표시 (새창열림)

'CS > [ALGORITHM]' 카테고리의 다른 글

[Algorithm] Quick Sort(퀵 정렬)  (0) 2022.06.29
[Algorithm] Merge Sort(병합 정렬)  (0) 2022.06.28
[Algorithm] Insertion Sort(삽입 정렬)  (0) 2022.06.11
[Algorithm] Selection Sort(선택 정렬)  (0) 2022.06.10
  1. 1. 정의
  2. 2. 동작 과정
  3. 3. 장단점
  4. 4. 코드 (오름차순)
  5. ※ 참고
'CS/[ALGORITHM]' 카테고리의 다른 글
  • [Algorithm] Quick Sort(퀵 정렬)
  • [Algorithm] Merge Sort(병합 정렬)
  • [Algorithm] Insertion Sort(삽입 정렬)
  • [Algorithm] Selection Sort(선택 정렬)
쿠엔크
쿠엔크
우아한테크코스 5기 BE 에단 Github : https://github.com/cookienc
쿠엔크
기러기는 기록기록
쿠엔크
전체
오늘
어제
  • 분류 전체보기 (132)
    • CS (46)
      • [OS] (12)
      • [NETWORK] (10)
      • [DATABASE] (11)
      • [BASIC CONCEPT] (1)
      • [DATA STRUCTURE] (7)
      • [ALGORITHM] (5)
    • LANGUAGE (17)
      • [JAVA] (17)
    • DESIGN_PATTERN (2)
    • FRAMEWORK (18)
      • [SPRING] (18)
    • ORM (11)
      • JPA (11)
    • AWS (7)
    • BOOK (10)
      • [자바 웹 개발 워크북] (3)
      • [이펙티브 자바] (7)
    • 개발 (19)
      • [오류] (7)
      • [고민] (1)
      • [우테코] (10)
      • [iTracker] (1)
    • Tip (1)
      • [Plugins] (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 가비아
  • 디자인 패턴
  • Effective Java
  • 데이터베이스
  • ArgumentResolver
  • JPA
  • JVM
  • 자바 웹 개발 워크북
  • 개념
  • Spring
  • 알고리즘
  • java
  • HTTP
  • aws
  • CORS
  • 운영체제
  • 네트워크
  • 자료구조
  • 스프링
  • 오류

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
쿠엔크
[Algorithm] Bubble Sort (거품 정렬)

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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