티스토리 뷰
반응형
안녕하세요 , 이번엔 C언어 알고리즘의 기초인 버블정렬(bubble sort)를 C로 구현하겠습니다.
정렬에는 삽입정렬, 버블정렬, 선택정렬 등 여러가지 방법이 있습니다.
그 중 버블정렬이란, 배열 내의 처음부터 인접한 두 데이터를 비교하며 값이 큰 데이터를 뒤로 바꾸면서
배열의 끝까지 반복하여 정렬하는 법입니다.
여러 정렬법중에 코드는 가장 간단하지만 시간이 가장 오래걸린다는 단점이 있습니다.
이를 C로 구현해보았습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <stdio.h> int main(){ int arr[5]={10, 3, 15, 12, 1}; int temp; //swap을 위해 선언 for(int i=0;i<5;i++){ for(int j=0;j<4-i;j++){ if(arr[j]>arr[j+1]){ temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } for(int i=0;i<5;i++) printf("%d ",arr[i]); return 0; } | cs |
위와 같은데요, arr라는 배열을 선언해주고
for문을 두개 사용했습니다.
최초에 두번째 for문에 들어가면 아래 처럼 순차적으로 진행되며
배열 내의 가장 큰 수가 가장 오른쪽으로 가게 됩니다.
10 3 15 12 1
3 10 15 12 1
3 10 12 15 1
3 10 12 1 15 (가장 큰 수인 15가 가장 오른쪽)
이때부터 마지막 15를 제외한 앞의 네개의 항만을 다시 앞과정을 반복합니다. (그래서 두번째 for문의 조건은 j<4-i가 됨)
3 10 1 12 15
3 1 10 12 15
1 3 10 12 15
이렇게 진행되어 오름차순으로 매우 잘 정렬됩니다.
이 소스를 실행하게 되면
위와 같이 잘 정렬이 되는 것을 알 수 있습니다.
반응형
'알고리즘&자료구조' 카테고리의 다른 글
[자료구조] C언어로 큐(Queue) , 원형 큐(Circular Queue) 구현, 소스코드 (19) | 2018.01.05 |
---|---|
[알고리즘] C언어 삽입정렬 구현(Insertion Sort) 소스코드 (1) | 2018.01.05 |
[알고리즘] C언어 선택정렬 구현(selection sort) ,소스코드 (0) | 2018.01.03 |
[자료구조] C언어로 스택(Stack) 구현, 소스코드 (6) | 2018.01.01 |
[알고리즘]C언어 재귀함수 구현(Recursion) - 팩토리얼(factorial) (1) | 2018.01.01 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday