티스토리 뷰
반응형
모든 강의 자료 : www.codingnow.co.kr/
개발을 위한 알고리즘 중에 가장 보편적이고 흔하게 사용되는 버블소트입니다.
단순히 다중 for 를 사용하여 알고리즘구현이 가능합니다.
파이썬의 경우는 기본 sort 메소드가 있어 구현이 필요없지만
C언어와 비교해 보면서 문법의 차이점을 알아보겠습니다.
여기서는 다중 for와 기본적인 논리연산과 조건문을 사용하여 처리할 수 있습니다.
강의에 사용된 PPT입니다.
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)
반응형
'C언어 강의' 카테고리의 다른 글
C언어와 파이썬 활용하여 두 수 사이의 배수의 합을 구하기 (0) | 2021.02.10 |
---|---|
C언어기초활용 함수포인터에 대해 살려봅니다. (0) | 2021.02.02 |
C언어 기초활용하여 램덤수 맞추기 게임 만들기 (0) | 2021.02.01 |
C언어 기초활용하여 10진수를 2진수로 출력하기 입니다. (0) | 2021.01.28 |
C언어 기초 GCC 컴파일러 설치하기 - 신규다운로드 사이트 (0) | 2021.01.27 |