컴공 일기113
게시글 주소: https://dev.orbi.kr/00057473590
신촌 연합 알고리즘 캠프 첫 번째 수업에서 다룬 여러 정렬 중, 가장 기본적인 버블 정렬 구현 예제입니다. 이 예제에서는, 실행 결과를 보면 알 수 있는데 오름차순으로 정렬을 해봤습니다. 방향만 바꾸면 내림차순 정렬 또한 버블 정렬로 구현할 수 있죠. 하여튼 버블 정렬은 시간복잡도를 꽤 잡아먹기 때문에, 좋은 알고리즘은 아닙니다. (물론, 다른 정렬에 비해서 구조가 간단하기 때문에, 실행 중 오류가 날 가능성이 현저히 떨어진다는 측면에선 좋게 봐줄만도 하지요..)
하지만, 어떤 한 과목을 100점 맞은 사람은 0점을 맞을 수도 있는 법이지요. 비효율적인 이유를 알아야, 효율적인 코드를 잘 작성할 수 있을 겁니다.
약간의 개선을 통해 버블 정렬의 연산량을 줄여보긴 했지만, 퀵 정렬에 비하면 여전히 안타깝기 그지없는 코드입니다.
#include <stdio.h>
void BubbleSort(int DataSet[], int Length)
{
int i = 0;
int j = 0;
int temp = 0;
for (i = 0; i < Length - 1; i++)
{
int excg = 0;
for (j = 0; j < Length - (i + 1); j++)
{
if (DataSet[j] > DataSet[j + 1])
{
temp = DataSet[j + 1];
DataSet[j + 1] = DataSet[j];
DataSet[j] = temp;
excg++;
}
}
if (excg == 0)
{
printf("개선된 버블 정렬이 작동하고 있습니다!\n");
break;
}
}
}
int main()
{
int DataSet[] = { 6,4,3,2,1,5 };
int Length = sizeof(DataSet) / sizeof(DataSet[0]);
int i = 0;
BubbleSort(DataSet, Length);
for (i = 0; i < Length; i++)
{
printf("%d ", DataSet[i]);
}
return 0;
}
[실행결과]
개선된 버블 정렬이 작동하고 있습니다!
1 2 3 4 5 6
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
좋아요 0 답글 달기 신고 -
좋아요 1 답글 달기 신고 -
-
리중딱 1 1
이라는 말은 듣고 개쳐웃으며 Epl을 본격적으로 열심히 보던해에 리버풀이 챔스우승을 했다
-
캉테한테 고백하고 싶다 사실 어두운 갈색이 없어서 샤프심으로 색칠했어요ㅠ 담에...
-
실제 케인보다 잘생기게 그렸네요. 그림봐주셔서 감사합니다
-
킁킁 괜찮나요?
-
캉테한테 고백하려고 모은 사진 1 14 0
조금만 뿌린다 후ㅜㅜ 마크롱 품안에 안겨있는 캉테 ^^ 오늘은 여기까지... 캉테가...
-
뮐러와 알론소의 훈훈한 투샷 0 1
크허허ㅓㅎ
-
epl 대표 여친짤 뿌림 ㅎㄷㄷ 11 0
후 나혼자 가지고 있기 아까웠다 ㅠㅠ 얼릉얼릉 다운하라고~!
-
러브유얼셀프..
-
..,
-
이번 EPL TOP4 17 1
첼시 토트넘 맨유 아스날 예상합니다
-
United Star Scholes Retires 4 0
http://www.manutd.com/en/News-And-Features/Foot...
