SlideShare a Scribd company logo
Bubble Sort Algorithm
버블 정렬 알고리즘
버블 정렬 알고리즘이란
첫번째 값부터 시작해서
순차적으로 바로 옆자리의 데이터와
계속해서 비교해 나가는 알고리즘이다.
정렬하는 모양이 버블과 비슷하다고 해서 붙여진 이름이다.
버블 정렬 알고리즘이란
첫번째 값부터 시작해서
순차적으로 바로 옆자리의 데이터와
계속해서 비교해 나가는 알고리즘이다.
정렬하는 모양이 버블과 비슷하다고 해서 붙여진 이름이다.
100 68 25 1 15 72
Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99]
첫번째 값
버블 정렬 알고리즘의 시간복잡도는 O(𝑁2
) 이다.
최선의 경우에는 이동횟수 0 비교횟수 𝑁2
/ 2 이고
최악의 경우에는 이동횟수와 비교횟수 모두 𝑁2
/ 2 이 된다.
최악의 경우를 가정했을 때의 알고리즘 성능이
다른 정렬 알고리즘보다 많이 나쁘다.
주요 함수
void BubbleSort(void)
void BubbleSort(void)
void BubbleSort(void)
{
int i, j, dummy;
for(i=MAX-1;i>=0;i--){
for(j=1;j<=i;j++){
if(Buf[j-1] > Buf[j]){
dummy = Buf[j-1];
Buf[j-1] = Buf[j];
Buf[j] = dummy;
}
}
}
}
정렬할 배열 Buf의 값을
버블 정렬한다.
void BubbleSort(void)
void BubbleSort(void)
{
int i, j, dummy;
for(i=MAX-1;i>=0;i--){
for(j=1;j<=i;j++){
if(Buf[j-1] > Buf[j]){
dummy = Buf[j-1];
Buf[j-1] = Buf[j];
Buf[j] = dummy;
}
}
}
}
i는 MAX-1인 99부터 0까지
반복한다.
99
i
void BubbleSort(void)
void BubbleSort(void)
{
int i, j, dummy;
for(i=MAX-1;i>=0;i--){
for(j=1;j<=i;j++){
if(Buf[j-1] > Buf[j]){
dummy = Buf[j-1];
Buf[j-1] = Buf[j];
Buf[j] = dummy;
}
}
}
}
j는 1부터 i와 같을 때까지
즉 맨처음에는 1부터 99까지
반복하고 그 다음에는 1부터
98까지 이런식으로 i의 값이 1
씩 내려오면서 반복하게 된다.
100 68 25 1 15 72
Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99]
99
i
1
j
void BubbleSort(void)
void BubbleSort(void)
{
int i, j, dummy;
for(i=MAX-1;i>=0;i--){
for(j=1;j<=i;j++){
if(Buf[j-1] > Buf[j]){
dummy = Buf[j-1];
Buf[j-1] = Buf[j];
Buf[j] = dummy;
}
}
}
}
j는 1부터 i와 같을 때까지
즉 맨처음에는 1부터 99까지
반복하고 그 다음에는 1부터
98까지 이런식으로 i의 값이 1
씩 내려오면서 반복하게 된다.
100 68 25 1 15 72
Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99]
98
i
1
j
void BubbleSort(void)
void BubbleSort(void)
{
int i, j, dummy;
for(i=MAX-1;i>=0;i--){
for(j=1;j<=i;j++){
if(Buf[j-1] > Buf[j]){
dummy = Buf[j-1];
Buf[j-1] = Buf[j];
Buf[j] = dummy;
}
}
}
}
Buf[j-1]과 Buf[j]를 비교해서
Buf[j-1]의 값이 더 크면
100 68 25 1 15 72
Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99]
99
i
1
j
Buf[j]Buf[j-1]
void BubbleSort(void)
void BubbleSort(void)
{
int i, j, dummy;
for(i=MAX-1;i>=0;i--){
for(j=1;j<=i;j++){
if(Buf[j-1] > Buf[j]){
dummy = Buf[j-1];
Buf[j-1] = Buf[j];
Buf[j] = dummy;
}
}
}
}
Buf[j-1]과 Buf[j]를 스왑한다.
68 100 25 1 15 72
Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99]
99
i
1
j
Buf[j]Buf[j-1]
void BubbleSort(void)
void BubbleSort(void)
{
int i, j, dummy;
for(i=MAX-1;i>=0;i--){
for(j=1;j<=i;j++){
if(Buf[j-1] > Buf[j]){
dummy = Buf[j-1];
Buf[j-1] = Buf[j];
Buf[j] = dummy;
}
}
}
}
Buf[j-1]과 Buf[j]를 스왑한다.
68 25 100 1 15 72
Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99]
99
i
2
j
Buf[j]Buf[j-1]
- 끝 -

More Related Content

PPTX
Selection Sort Algorithm(선택 정렬 알고리즘)
PPTX
Insert Sort Algorithm (삽입 정렬 알고리즘)
PPT
&#53685;&#44228;&#54617;&#44060;&#47200;
PDF
Shellscript에 대하여
PDF
DP Optimization
PDF
You can read go code
PPTX
Shell Sort Algorithm (셸 정렬 알고리즘)
PPTX
Item 30 int 상수 대신 enum을 사용하자
Selection Sort Algorithm(선택 정렬 알고리즘)
Insert Sort Algorithm (삽입 정렬 알고리즘)
&#53685;&#44228;&#54617;&#44060;&#47200;
Shellscript에 대하여
DP Optimization
You can read go code
Shell Sort Algorithm (셸 정렬 알고리즘)
Item 30 int 상수 대신 enum을 사용하자

What's hot (11)

PDF
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
PDF
02_3_여러가지연산자
PPT
부울 대수와 컴퓨터 논리
PPT
Taocp 1 2-2
PPT
String Searching Algorithms
PPT
제4강 명제와 논리-정보
PDF
게임프로그래밍입문 4주차
PDF
게임프로그래밍입문 5주차
PDF
게임프로그래밍입문 3주차
PDF
[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제 풀이
PDF
[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
02_3_여러가지연산자
부울 대수와 컴퓨터 논리
Taocp 1 2-2
String Searching Algorithms
제4강 명제와 논리-정보
게임프로그래밍입문 4주차
게임프로그래밍입문 5주차
게임프로그래밍입문 3주차
[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이
Ad

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

  • 1. Bubble Sort Algorithm 버블 정렬 알고리즘
  • 2. 버블 정렬 알고리즘이란 첫번째 값부터 시작해서 순차적으로 바로 옆자리의 데이터와 계속해서 비교해 나가는 알고리즘이다. 정렬하는 모양이 버블과 비슷하다고 해서 붙여진 이름이다.
  • 3. 버블 정렬 알고리즘이란 첫번째 값부터 시작해서 순차적으로 바로 옆자리의 데이터와 계속해서 비교해 나가는 알고리즘이다. 정렬하는 모양이 버블과 비슷하다고 해서 붙여진 이름이다. 100 68 25 1 15 72 Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99] 첫번째 값
  • 4. 버블 정렬 알고리즘의 시간복잡도는 O(𝑁2 ) 이다. 최선의 경우에는 이동횟수 0 비교횟수 𝑁2 / 2 이고 최악의 경우에는 이동횟수와 비교횟수 모두 𝑁2 / 2 이 된다. 최악의 경우를 가정했을 때의 알고리즘 성능이 다른 정렬 알고리즘보다 많이 나쁘다.
  • 6. void BubbleSort(void) void BubbleSort(void) { int i, j, dummy; for(i=MAX-1;i>=0;i--){ for(j=1;j<=i;j++){ if(Buf[j-1] > Buf[j]){ dummy = Buf[j-1]; Buf[j-1] = Buf[j]; Buf[j] = dummy; } } } } 정렬할 배열 Buf의 값을 버블 정렬한다.
  • 7. void BubbleSort(void) void BubbleSort(void) { int i, j, dummy; for(i=MAX-1;i>=0;i--){ for(j=1;j<=i;j++){ if(Buf[j-1] > Buf[j]){ dummy = Buf[j-1]; Buf[j-1] = Buf[j]; Buf[j] = dummy; } } } } i는 MAX-1인 99부터 0까지 반복한다. 99 i
  • 8. void BubbleSort(void) void BubbleSort(void) { int i, j, dummy; for(i=MAX-1;i>=0;i--){ for(j=1;j<=i;j++){ if(Buf[j-1] > Buf[j]){ dummy = Buf[j-1]; Buf[j-1] = Buf[j]; Buf[j] = dummy; } } } } j는 1부터 i와 같을 때까지 즉 맨처음에는 1부터 99까지 반복하고 그 다음에는 1부터 98까지 이런식으로 i의 값이 1 씩 내려오면서 반복하게 된다. 100 68 25 1 15 72 Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99] 99 i 1 j
  • 9. void BubbleSort(void) void BubbleSort(void) { int i, j, dummy; for(i=MAX-1;i>=0;i--){ for(j=1;j<=i;j++){ if(Buf[j-1] > Buf[j]){ dummy = Buf[j-1]; Buf[j-1] = Buf[j]; Buf[j] = dummy; } } } } j는 1부터 i와 같을 때까지 즉 맨처음에는 1부터 99까지 반복하고 그 다음에는 1부터 98까지 이런식으로 i의 값이 1 씩 내려오면서 반복하게 된다. 100 68 25 1 15 72 Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99] 98 i 1 j
  • 10. void BubbleSort(void) void BubbleSort(void) { int i, j, dummy; for(i=MAX-1;i>=0;i--){ for(j=1;j<=i;j++){ if(Buf[j-1] > Buf[j]){ dummy = Buf[j-1]; Buf[j-1] = Buf[j]; Buf[j] = dummy; } } } } Buf[j-1]과 Buf[j]를 비교해서 Buf[j-1]의 값이 더 크면 100 68 25 1 15 72 Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99] 99 i 1 j Buf[j]Buf[j-1]
  • 11. void BubbleSort(void) void BubbleSort(void) { int i, j, dummy; for(i=MAX-1;i>=0;i--){ for(j=1;j<=i;j++){ if(Buf[j-1] > Buf[j]){ dummy = Buf[j-1]; Buf[j-1] = Buf[j]; Buf[j] = dummy; } } } } Buf[j-1]과 Buf[j]를 스왑한다. 68 100 25 1 15 72 Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99] 99 i 1 j Buf[j]Buf[j-1]
  • 12. void BubbleSort(void) void BubbleSort(void) { int i, j, dummy; for(i=MAX-1;i>=0;i--){ for(j=1;j<=i;j++){ if(Buf[j-1] > Buf[j]){ dummy = Buf[j-1]; Buf[j-1] = Buf[j]; Buf[j] = dummy; } } } } Buf[j-1]과 Buf[j]를 스왑한다. 68 25 100 1 15 72 Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99] 99 i 2 j Buf[j]Buf[j-1]