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]
- 끝 -

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 이 된다. 최악의 경우를 가정했을 때의 알고리즘 성능이 다른 정렬 알고리즘보다 많이 나쁘다.
  • 5.
  • 6.
    void BubbleSort(void) void BubbleSort(void) { inti, 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) { inti, 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) { inti, 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) { inti, 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) { inti, 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) { inti, 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) { inti, 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]
  • 13.