퀵소트
1. Pivot(기준값)을 정한다.
2. Pivot보다 작은 원소들은 왼쪽으로, pivot보다 큰 원소들은 오른쪽으로 보낸다.
3. pivot을 기준으로 왼쪽 배열과 오른쪽 배열을 새로운 배열로 정하고, 각 배열 구간에 대해 1번 과정을 재귀적으로 반복한다.
* 일반적으로 처음의 원소 또는 가장 마지막 원소를 pivot으로 잡는방법을 이용
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 | #include<stdio.h> #define SWAP(A,B) {int temp = A; A=B; B=temp;} int arr[101]; void quick_sort(int s, int e) { if(s>=e) return; int p = s; int l = s+1; int r = e; while(l<=r) { while((l<=e) && (arr[l]<=arr[p])) l++; while((r>=s+1) && (arr[r]>=arr[p])) r--; if(l<r) SWAP(arr[l], arr[r]); } SWAP(arr[p], arr[r]); quick_sort(s, r-1); quick_sort(r+1, e); } int main() { int cnt = 0; int i=0; scanf("%d", &cnt); for(; i<cnt; i++) scanf("%d", &arr[i]); quick_sort(0, cnt-1); for(i=0; i<cnt; i++) printf("%d ", arr[i]); printf("\n"); return 0; } | cs |
728x90
'Software Development > Algorithm' 카테고리의 다른 글
탐색기반 알고리즘 설계_2.비선형구조탐색 (0) | 2016.01.30 |
---|---|
탐색기반 알고리즘 설계_1.선형구조탐색 (0) | 2016.01.17 |
메모_ (0) | 2015.04.08 |
알고리즘 메모 (0) | 2015.03.31 |
동적 계획법(Dynamic Programming)_1.개념 (0) | 2015.03.26 |