suyeoniii
수바리의 코딩일기
suyeoniii
전체 방문자
오늘
어제
  • 분류 전체보기
    • 🪓 삽질일기
    • 🔙 Backend
      • 🟢 Node.js
      • 🐈‍⬛ NestJS
      • 🌿 Springboot
      • 🗄️ Database
    • 🌸 Frontend
      • 🌐 React.js
      • 💚 Vue.js
      • 🤖 Android
    • 🕹️ 알고리즘
      • 💯 코딩테스트
    • 🔠 프로그래밍 언어
      • 💛 Javascript
      • 💙 Typescript
    • 🚀 배포
    • 🐱 Git
    • etc.
      • 개발환경
      • 오픈 API
      • 개념정리
      • 커뮤니티
    • AI
      • 생성형 AI
    • 회고

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Spring Boot
  • springboot
  • MAC
  • Git
  • ec2
  • AWS
  • 알고리즘
  • html
  • C++
  • nodejs
  • java
  • vue
  • 백준
  • node.js
  • ubuntu
  • node
  • MySQL
  • javascript
  • android
  • 회고

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
suyeoniii

수바리의 코딩일기

[알고리즘]버블 정렬(Bubble Sort)
🕹️ 알고리즘

[알고리즘]버블 정렬(Bubble Sort)

2020. 8. 25. 23:31
반응형

정렬 알고리즘에는 대표적으로

병합정렬, 퀵정렬, 삽입정렬, 선택정렬, 버블정렬 등이 있습니다.

이번에는 그 중에서 제일 간단하게 구현할 수 있는 버블 정렬을 알아보겠습니다!

 

 

버블 정렬(오름차순)

버블 정렬은 앞에서부터 두수를 비교하며

가장 큰수를 찾고, 남은 수를 다시 두개씩 비교하며

그 다음으로 큰 수를 찾는 과정을 원소가 1개 남을 때까지 반복하는 정렬 알고리즘입니다.

 

시간 복잡도

위 예시에서 n = 5이므로

제일 큰 숫자인 5를 찾는데까지 4번(=n-1번)이 걸리고

다음으로 큰 숫자인 4를 찾는데까지 3번(=n-2번)이 걸립니다

총 4+3+2+1번이 걸립니다.

 

n개의 수를 정렬하는 시간은

n-1+n-2+n-3+...1이므로

((n-1)(n-2))/2 = O(n^2)입니다.

최선, 최악의 경우 모두 같은 시간복잡도를 가집니다.

 

 

 

소스코드(C++)
#include <iostream>

using namespace std;

void bubble_sort(int arr[],int n){
	int i,j;
	int temp;

	for(i = n-1;i>0;i--){ 
		for(j = 0;j<i;j++){
			if(arr[j]>arr[j+1]){ //왼쪽이 오른쪽 보다 크면 swap
				temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}
}

int main(){
	int arr[5] = {3, 2, 5, 1, 4};
	int n = sizeof(arr)/sizeof(int);

	bubble_sort(arr,n); //버블정렬 수행

	for(int i = 0;i<n;i++)//출력
		cout<<arr[i];
}

이중 포문을 이용하여 왼쪽이 오른쪽보다 클 때 교환해주기만 하면 끝입니다! 

정말 간단하죠?

 

구현이 쉽다는 장점이 있지만, 다른 정렬 알고리즘에 비해 오래걸린다는 단점이 있습니다.

 

반응형

'🕹️ 알고리즘' 카테고리의 다른 글

[알고리즘]깊이우선탐색(DFS),너비우선탐색(BFS)  (0) 2020.12.29
[알고리즘]완전탐색(Brute-force)  (0) 2020.12.27
[알고리즘]다이나믹 프로그래밍(DP, 동적계획법)  (0) 2020.11.25
[알고리즘]삽입정렬(Insertion Sort)  (0) 2020.08.28
[알고리즘]선택정렬(Selection Sort)  (0) 2020.08.26
    '🕹️ 알고리즘' 카테고리의 다른 글
    • [알고리즘]완전탐색(Brute-force)
    • [알고리즘]다이나믹 프로그래밍(DP, 동적계획법)
    • [알고리즘]삽입정렬(Insertion Sort)
    • [알고리즘]선택정렬(Selection Sort)
    suyeoniii
    suyeoniii
    개발관련 문제 해결, 공부한 내용 등을 업로드합니다.

    티스토리툴바