티스토리 뷰

반응형

 

모든 강의 자료 : www.codingnow.co.kr/

 

코딩나우

프로그래밍 교육및 개발의뢰 받습니다.

www.codingnow.co.kr

 

youtu.be/rJXihhVGhHA

 

 

 

 

 

 

개발을 위한 알고리즘 중에 가장 보편적이고 흔하게 사용되는 버블소트입니다.

단순히 다중 for 를 사용하여 알고리즘구현이 가능합니다.

 

파이썬의 경우는 기본 sort 메소드가 있어 구현이 필요없지만

C언어와 비교해 보면서 문법의 차이점을 알아보겠습니다.

 

여기서는 다중 for와 기본적인 논리연산과 조건문을 사용하여 처리할 수 있습니다.

 

강의에 사용된 PPT입니다.

buble sort 설명 PPT
bubble.pptx
1.16MB

 

C언어 소스코드
#include <stdio.h>

void bubbleSort(int *val, int length, unsigned char reverse)
{
    int tmp;
    for(int i=0; i<length; i++)
    {
        for(int k=0; k<length-1; k++)
        {
            if (reverse && (val[k] > val[k + 1]) 
                || (!reverse && (val[k] < val[k + 1])))
            {
                tmp = val[k];
                val[k] = val[k + 1];
                val[k+1] = tmp;
            }
        }
    }
}

void main(void)
{
    int val[] = {2, 9, 4, 6, 5, 8, 4, 6, 1, 7, 3, 0};
    int length = sizeof(val)/sizeof(int);

    for( int i=0; i<length; i++)
    {
        printf("%d ",val[i]);
    }
    printf("\n");

    bubbleSort(val, length, 0);

    for (int i = 0; i < length; i++)
    {
        printf("%d ", val[i]);
    }
    printf("\n");

    bubbleSort(val, length, 1);

    for (int i = 0; i < length; i++)
    {
        printf("%d ", val[i]);
    }
    printf("\n");
}

 

파이썬 소스코드
def bubbleSort(val, length, reverse):
    tmp = 0
    for i in range(length):    
        for k in range(length-1):        
            if (reverse and (val[k] > val[k + 1]) 
               or (not reverse and (val[k] < val[k + 1]))):           
                tmp = val[k]
                val[k] = val[k + 1]
                val[k+1] = tmp

val = [2, 9, 4, 6, 5, 8, 4, 6, 1, 7, 3, 0]
length = len(val)
print(val)

bubbleSort(val, length, 0)
# val.sort(reverse=True)
print(val)

bubbleSort(val, length, 1)
print(val)
반응형