4. 버블 정렬(Bubble Sort) - O(n2)

2023. 2. 26. 13:55· CS/👫🏼 정렬
목차
  1. 과정(우리는 오름차순을 기준으로 한다.)
  2. 코드[ JAVA ] 
  3.  
  4. 거품 정렬의 장단점
이쯤에서 슬슬 앞의 정렬을 까먹은분을 위해 짧막 상식
우리가 배웠던 정렬의 방식을 짧게 설명하고자 한다

1. 계수 정렬
 = 들어온 숫자를 배열로 받아서 들어온 숫자를 카운트하여 정렬
2. 선택 정렬
 = 인덱스의 순서대로 숫자를 지정하며 해당 숫자를 직접 찾아 둘이서 교환
3. 삽입 정렬
 = 뒷자리 숫자와 앞자리 숫자를 비교하고 더 작은 숫자를 비교하고 해당 숫자의 앞자리가 본인보다 작은것을 찾을때 까지 비교한다.

 

과정(우리는 오름차순을 기준으로 한다.)

1. 앞에서부터 현재 원소와 바로 다음의 원소를 비교한다.

2. 현재 원소가 다음 원소보다 크면 원소를 교환한다.

3. 다음 원소로 이동하여 해당 원소와 그 다음 원소를 비교한다.

 

거품 정렬은 정렬규칙이 있다 

총 라운드는 (배열 크기 - 1)번 진행하고

라운드에서 비교 횟수는 (배열 크기 - 라운드 횟수) 만큼 비교한다.

 

코드[ JAVA ] 

구현은 나의 깃허브에 해놓았다 시간이 된다면 보는것을 적극 추천한다

https://github.com/ProblemSolveStudy/Tae_sik/tree/master/Sorts

 

GitHub - ProblemSolveStudy/Tae_sik

Contribute to ProblemSolveStudy/Tae_sik development by creating an account on GitHub.

github.com

 

거품 정렬의 장단점

 

◐ 장점

 = 추가적인 메모리 소비가 적다.

 = 구현이 매우 간단하다

 = 안정 정렬이다.

 

◑ 단점

 = 다른 정렬 알고리즘에 비해 교환 과정이 길다. 즉, 많은 시간을 소비한다는것이다.

    시간 복잡도가 크다.

 

 

정리

두개의 인접한 원소를 비교하여 정렬하는 방식의 버블정렬은 정렬과정이 마치 거품처럼 톡톡 올라오는것처럼 생겨서 생긴 별명이라고 할 수 있다.

그리고 딱 보기만 해도 굉장히 기초적인 정렬 알고리즘이자 잘 사용하지 않는 정렬이라는것을 눈치 챌수 있다.

구현 난이도 또한 굉장히 쉬운 난이도에 속한다.

 

버블정렬의 특징 중에 비교 정렬을 한다는것과 제자리 정렬을 하는것은 우리가 앞서 배운 선택 정렬과 매우 흡사하다.

하지만 안정 정렬이라는것이 가장 큰 차이 이다.

 

 

  최악 최선 평균
Counting Sort(계수 정렬)     O(n)
Selection Sort(선택 정렬) O(n2) O(n2) O(n2)
Insertion Sort(삽입 정렬) O(n2) O(n) O(n2)
Bubble Sort(거품 정렬) O(n2) O(n) O(n2)

 

 

 

 

'CS > 👫🏼 정렬' 카테고리의 다른 글

2. 선택 정렬(Selection Sort) - O(n2)  (0) 2023.02.23
우선순위 큐(Priority Queue)와 힙 정렬(Heap Sort)의 차이  (0) 2023.02.21
1. 카운팅 정렬 (Counting sort) - O(n)  (2) 2023.02.21
5. 셸 정렬(Shell Sort) - None  (0) 2023.02.15
이진 삽입 정렬(Binary Insertion Sort)  (0) 2023.02.15
  1. 과정(우리는 오름차순을 기준으로 한다.)
  2. 코드[ JAVA ] 
  3.  
  4. 거품 정렬의 장단점
'CS/👫🏼 정렬' 카테고리의 다른 글
  • 2. 선택 정렬(Selection Sort) - O(n2)
  • 우선순위 큐(Priority Queue)와 힙 정렬(Heap Sort)의 차이
  • 1. 카운팅 정렬 (Counting sort) - O(n)
  • 5. 셸 정렬(Shell Sort) - None
늦은산책
늦은산책
늦은산책
중얼중얼블로그
늦은산책
전체
오늘
어제
  • 분류 전체보기
    • 오류 모음집
    • CS
      • 💾 자료구조
      • 👫🏼 정렬
      • 🖥 네트워크
      • 💻 운영체제
      • 💾 DB
      • 🌌 알고리즘
      • 📝 언어
    • 테스트
    • Git 초보에게 필요한 Git bash사용법
    • 프로젝트
      • 팀 프로젝트
      • 개인 프로젝트
      • 항해99 개인 프로젝트
      • 스위프 프로젝트(Lit Map)
    • Java
      • 객체 지향
    • Spring
      • 🌲 Spring
      • 👨‍💻 SpringSecurity
      • 🌵 JPA
    • MSA
      • MSA 강좌 - 이도원 강사님
    • Docker(도커)
    • 코딩테스트
      • 🧮 프로그래머스
      • 🎲 백준
    • 항해99
      • 🕛 1주차
      • 🕐 2주차
      • 🕑 3주차
      • 🕒 4주차
    • AWS
    • CI와CD

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 카우치코딩_포트폴리오_멘토링
  • 개발자포토폴리오
  • 취리코
  • 항해99
  • 취업리부트코스
  • 개발자포트폴리오
  • 카우치코딩
  • 개발자취준
  • 개발자취업
  • 카우치코딩_팀프로젝트
  • 코딩테스트
  • couchcoding
  • 개발자이력서

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
늦은산책
4. 버블 정렬(Bubble Sort) - O(n2)
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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