반응형
SMALL
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | #include <stdio.h> #define SZ 11 //int a[SZ] = {35, 40, 50, 60, 70, 14, 100, 3, 4, 5, 6}; int a[SZ] = { 35, 40, 40, 40, 40, 40, 4, 4, 3, 4, 4 }; void showAll() { for (int i = 0; i < SZ; i++) { printf("%d ", a[i]); } printf("\n"); } void swap(int x, int y) { int temp = a[x]; a[x] = a[y]; a[y] = temp; } void qsort(int pivot, int _left, int _right) { printf("Debug:: "); showAll(); int left = _left; int right = _right; if (pivot > _right) // no data to be sorted { return; } if (pivot == _right) // there is only one data { return; } // there is only two data if (pivot < _right && _left == _right) { if (a[pivot] > a[_right]) { swap(pivot, _right); } return; } while (1) { while (a[pivot] >= a[left] && left <= _right) { left++; } while (a[pivot] < a[right] && right >= pivot) { right--; } if (left < right) { swap(left, right); } else { swap(pivot, right); qsort(pivot, pivot+1, right-1); qsort(right+1, right+2, _right); return; } } } int main(void) { showAll(); qsort(0, 1, 10); printf("After sorting------------------------\n"); showAll(); return 0; } |
반응형
LIST
'데이터구조 > 소스코드' 카테고리의 다른 글
Hasing 예제코드 (0) | 2016.05.30 |
---|---|
Priority Queue, Min Heap (0) | 2016.05.16 |
BST를 이용한 영어/한글 단어관리 프로그램 소스 (0) | 2016.05.09 |
OJ 1161 (0) | 2016.04.25 |
OJ 1160 (0) | 2016.04.25 |