버블 정렬(Bubble Sort)
누구나 한 번쯤은 들어봤을 버블 정렬(혹은 거품 정렬이라고도 불린다)에 대해서 알아보려고 한다.
버블 정렬은 구현이 직관적이고 간단하다.
- 아래의 과정을 배열의 길이 - 1번 반복한다.
- n번째 원소와 n + 1번째 원소를 비교한다.
- n번째 원소가 더 크다면 자리를 바꾼다. (Swap)
- n + 1번째 원소와 n + 2번째 원소를 비교한다.
- n + 1번째 원소가 더 크다면 자리를 바꾼다. (Swap)
- 배열 끝까지 이 과정을 반복한다.
- 이 과정을 통해 가장 오른쪽에 가장 큰 원소가 위치하게 된다.


시간 복잡도와 공간 복잡도
- 최고 시간 복잡도: O(n)
- 평균 시간 복잡도: O(n^2)
- 최악 시간 복잡도: O(n^2)
- 최고 공간 복잡도: O(1)
수도 코드(Pseudo Code)
Initialize n = Length of Array
BubbleSort(Array, n)
{
for i = 0 to n-2
{
for j = 0 to n-2
{
if Array[j] > Array[j+1]
{
swap(Array[j], Array[j+1])
}
}
}
}
예제 코드
static void Main(string[] args)
{
var array = new int[] { 3, 2, 1 };
Console.WriteLine(string.Join(" ", BubbleSort(array))); // 1 2 3
}
public static int[] BubbleSort(int[] array)
{
for (int i = 0; i < array.Length - 1; i++)
{
for (int j = 0; j < array.Length -1; j++)
{
if (array[j] > array[j + 1])
{
var temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
}
}
}
return array;
}
버블 정렬의 시간 복잡도는 이차 시간 O(n^2)의 복잡도를 가진다. 모든 원소를 순회하면서 n의 원소와 n + 1의 원소를 비교해야 하기 때문이다.
함께 읽으면 좋은 글
빅-오(Big-O) 표기법
알고리즘에서 중요한 속성 정확성 : 주어진 입력을 모두 처리하며 올바르게 출력해야 한다. 효율성 : 문제를 효율적으로 해결해야 한다. - 시간 복잡도 : 알고리즘이 얼마나 빠르게 결과를 출력
jettstream.tistory.com
C# String.Join에 대해서
String.Join에 대해서 문자열 관련 코드를 보다 보면 가끔 보이는 String.Join() 메서드 하지만 가끔 보다 보니 매번 헷갈려서 인터넷에서 검색하게 된다. 이번에는 확실히 정리하고 기억해 보자. 함수
jettstream.tistory.com
참고 사이트
Bubble Sort Java
In this article the bubble sort algorithm is described. It is the easiest sorting algorithm to learn, so every software developer knows it. This algorithm is usually used for learning purposes or you may get it as a task in your Java
codegym.cc
'프로그래밍 > Algorithm' 카테고리의 다른 글
| C# 선택 정렬(Selection Sort)에 대해서 (0) | 2024.01.17 |
|---|---|
| C# 삽입 정렬(Insertion Sort)에 대해서 (0) | 2024.01.17 |
| [프로그래머스 Programmers] 2016년 (0) | 2024.01.16 |
| [프로그래머스 Programmers] 숫자 짝궁 (0) | 2024.01.15 |
| [프로그래머스 Programmers] 기사단원의 무기 (1) | 2024.01.10 |
댓글