:: ADVANCE ::

[Quick Sort] 퀵 정렬 본문

Algorithm/Algorithm

[Quick Sort] 퀵 정렬

KSJ14 2015. 7. 15. 21:34
반응형

[Quick Sort] 퀵 정렬








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
#include <stdio.h>
 
int count;
 
void print(int *data, int size)
{
    int i;
 
    for (i = 0; i < size; i++) {
        printf("%d ", data[i]);
    }
    printf("\n");
}
 
void swap(int *first, int *second)
{
    int temp;
 
    temp = *first;
    *first = *second;
    *second = temp;
}
 
void quicksort(int *data, int start, int end)
{
    int temp;
    int pivot = end;
    int left = start;
    int right = end;
 
    while (right > left) {
        while (data[left] < data[pivot] && left < right) { left++; }
        while (data[right] >= data[pivot] && left < right) { right--; }
 
        if (left == right) {
            swap(&data[left], &data[pivot]);
            pivot = left;
        }
        else { swap(&data[left], &data[right]); }
    }
 
    if (pivot > start) { quicksort(data, start, pivot - 1); }
    if (end > pivot) { quicksort(data, pivot + 1end); }
}
 
int main(void)
{
    int n, i;
    int input[100];
 
    scanf("%d", &n);
 
    for (i = 0; i < n; i++) {
        scanf("%d", &input[i]);
    }
 
    quicksort(input, 0, n - 1);
 
    print(input, n);
 
    return 0;
}
 
 
cs


[참고] https://ko.wikipedia.org/wiki/%ED%80%B5_%EC%A0%95%EB%A0%AC

[참고] http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=66

반응형
Comments