Skip to content

Commit 35fcf86

Browse files
committed
250915-bubble-sort
1 parent cda0a49 commit 35fcf86

File tree

3 files changed

+80
-2
lines changed

3 files changed

+80
-2
lines changed

.prettierrc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
{
2-
"arrowParens": "avoid",
3-
"semi": false
2+
"arrowParens": "avoid"
43
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
---
2+
title: "버블 정렬 (Bubble Sort)"
3+
description: "버블 정렬 알고리즘"
4+
date: "2025-09-15T10:53:00"
5+
thumbnail: "./thumbnail.png"
6+
category: "Algorithm"
7+
tags: ["Algorithm", "Sorting"]
8+
---
9+
10+
안녕하세요. 이번글은 버블 정렬 알고리즘이에요.
11+
12+
# 버블 정렬 (Bubble Sort)
13+
14+
버블 정렬이 뭘까요.
15+
16+
일단 시각적으로 한번 보는게 좋을것 같아요.
17+
18+
[Visualgo - Sorting](https://visualgo.net/en/sorting)
19+
20+
여기서 상단에 "Bubble Sort" 선택 후 왼쪽 하단에 "Sort" 버튼을 누르시면 시각적으로 버블 정렬이 어떻게 동작하는지 확인할 수 있어요.
21+
22+
다음은 버블정렬을 자바스크립트 코드로 구현한 예시입니다.
23+
24+
```ts
25+
function bubbleSort(arr) {
26+
let noSwaps;
27+
28+
for (let i = arr.length; i > 0; i--) {
29+
noSwaps = true;
30+
for (let j = 0; j < i - 1; j++) {
31+
// SWAP 로직
32+
if (arr[j] > arr[j + 1]) {
33+
let temp = arr[j];
34+
arr[j] = arr[j + 1];
35+
arr[j + 1] = temp;
36+
noSwaps = false;
37+
}
38+
}
39+
if (noSwaps) break;
40+
}
41+
42+
return arr;
43+
}
44+
```
45+
46+
> `noSwaps` 변수는 굳이 Swap이 필요하지 않은 상황일 때 Swap 하는 상황을 방지하기 위하여 선언한 변수에요.
47+
48+
기본적으로 위와같이 구현할 수 있습니다.
49+
50+
위 로직에서 For문에서 i를 배열의 길이로 먼저 설정하는 이유는 의미있는 반복을 하기 위해서에요.
51+
52+
만약 i를 0부터 `arr.length` 까지 반복한다고하면 반복문은 다음과 같이 바뀌어야할거에요.
53+
54+
```ts
55+
for (let i = 0; i < arr.length; i++) {
56+
for (let j = 0; j < arr.length; j++) {
57+
// ...
58+
}
59+
}
60+
```
61+
62+
반복문 부분을 위 처럼 작성해도 동작은 할거에요.
63+
대신 안쪽 For문은 무조건 `arr.length` 만큼 반복하게되요.
64+
65+
버블정렬 특성상 한 사이클을 지나고나면, 맨 뒤 요소는 고정이 되는데 말이에요.
66+
67+
그래서 해당 반복문 부분을
68+
69+
```ts
70+
for (let i = arr.length; i > 0; i--) {
71+
for (let j = 0; j < i - 1; j++) {}
72+
}
73+
```
74+
75+
이렇게 작성하게되면, 이미 정렬된 맨 뒤 요소까지는 Swap 로직을 실행하지 않게되서 좀 더 효율적이게 되는것이죠.
76+
77+
여기까지 버블정렬 알아봤구요
78+
79+
감사합니다
303 KB
Loading

0 commit comments

Comments
 (0)