C_C++

(C언어) 퀵 정렬(quick sort)

고니자니 2023. 7. 10. 18:25
반응형

C언어를 이용해서 퀵 정렬을 하는 예제입니다.

#include <stdio.h>
#define N 10

void quick_sort(int a[], int left, int right)
{
    int c, i, j, temp;
    if (left < right) {
        c = a[(left + right) / 2];    /* 중앙 값 */
        i = left - 1; 
        j = right + 1;   
        while (1) {            
            while (a[++i] < c);
            while (a[--j] > c);
            if (i >= j) break;
            
            temp = a[i];
            a[i] = a[j]; 
            a[j] = temp;
        }

        quick_sort(a, left, i - 1);
        quick_sort(a, j + 1, right);
    }
}

void print(int a[], int size)
{
    int i;
    for (i = 0; i < size; i++)
        printf("%4d", a[i]);

    printf("\n");
}

int main(void)
{
    int a[] = { 41,24,76,11,45,64,21,69,19,36 };

    printf("정렬 전: ");  print(a, 10);
    quick_sort(a, 0, N - 1);
    printf("정렬 후: "); print(a, 10);

    return 0;
}

 

퀵 정렬(quick sort)

 

반응형