티스토리 뷰
출처: http://en.wikipedia.org/wiki/Bubble_sort
방금 예제를 풀고 얕은 지식으로 쓴거니 확실히 알고싶은분은 출처에 가서 읽어보세요!
정수 5개로 예를 들면
First Pass:
( 5 1 4 2 8 ) \to ( 1 5 4 2 8 ), 첫 번째 원소와 두 번째 원소를 비교한다. 그리고 두번째 원소가 값이 더 작다면 첫 번째 원소와 두 번째 원소를 스왑.
( 1 5 4 2 8 ) \to ( 1 4 5 2 8 ), 위와 같이 5가 4보다 크기 때문에 5와 4를 스왑 -> 4 - 5
( 1 4 5 2 8 ) \to ( 1 4 2 5 8 ), 마찬가지
( 1 4 2 5 8 ) \to ( 1 4 2 5 8 ), 이번엔 5가 8보다 크지 않기 때문에 스왑하지 않는다.
첫 번째 예제와 같이 두 번째, 세 번째 예도 같음.
Second Pass:
( 1 4 2 5 8 ) \to ( 1 4 2 5 8 )
( 1 4 2 5 8 ) \to ( 1 2 4 5 8 ), Swap since 4 > 2
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
Third Pass:
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
#include <stdio.h>
int main() {
int num[100] = {0, }, i, j, k, N, temp;
scanf("%d", &N);
for (i = 0; i < N; i++) {
scanf("%d", &num[i]);
}
for (i = 0; i < N - 1; i++) {
for (j = 0; j < N - 1; j++) {
if (num[j] > num[j + 1]){
temp = num[j + 1];
num[j + 1] = num[j];
num[j] = temp;
}
else{
}
}
for(k = 0; k < N; k++){
printf("%d ", num[k]);
}
puts("");
}
}
'C, C++ > 데이터구조 & 자료구조' 카테고리의 다른 글
C언어 순차리스트 삽입, 삭제, 탐색, 출력 예제 (0) | 2018.03.22 |
---|---|
C언어 선택 정렬(Selection sort) (0) | 2016.06.06 |
C언어 하노이 타워 알고리즘(Hanoi Tower Algorithm) (0) | 2016.06.06 |
C언어 재귀(Recursive) 피보나치 수열 (0) | 2016.06.06 |
C언어 재귀이용 피보나치(Fibonacci) 수열 (0) | 2016.06.06 |
티스토리 방명록
- Total
- Today
- Yesterday
Contact: j0n9m1n1@gmail.com