§Recursive Bubble Sort
버블 정렬보다 성능/구현 상으로는 이점이 없지만 자신이 버블정렬에 대해 이해하는지 확인하는 좋은 질문이 될 수 있다.
- 배열 size가 1이면 return 한다.
- 현재 부분배열의 마지막 원소를 결정한다.
- 마지막 원소를 제외한 부분 배열에 대해 반복한다.
코드 ( 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 25 26 27 28 29 30 31 32 33 34 35 36 37 |
//////////////////////////////// // Recursive Bubble Sort // 재귀 버블 정렬 ////////////////////////////////
#include <stdio.h>
void swap(int *xp, int *yp) { int tmp = *xp; *xp = *yp; *yp = tmp; }
void bubbleSort(int arr[], int n) { if (n == 1)return;
for (int i = 0; i < n - 1; i++) if (arr[i] > arr[i + 1]) swap(&arr[i], &arr[i + 1]);
bubbleSort(arr, n - 1); }
void printArray(int arr[], int n) { for (int i = 0; i < n; i++) printf("%d ", arr[i]); printf("\n"); }
int main() { int arr[] = { 64, 34, 25, 12, 22, 11 ,90 }; int n = sizeof(arr) / sizeof(arr[0]); bubbleSort(arr, n); printf("Sorted array : "); printArray(arr, n); return 0; } |
'Algorithm' 카테고리의 다른 글
[정렬 알고리즘] Merge Sort(병합 정렬) (1) | 2018.03.14 |
---|---|
[정렬 알고리즘] Recursive Insertion Sort(재귀 삽입 정렬) (0) | 2018.03.14 |
[정렬 알고리즘] Insertion Sort(삽입정렬) (0) | 2018.03.14 |
[정렬 알고리즘] Bubble Sort(버블정렬, 거품정렬) (0) | 2018.03.14 |
[정렬 알고리즘] Seletion Sort (선택 정렬) (0) | 2018.03.14 |