C_C++

(C언어) qsort 함수를 이용한 숫자 정렬

enjoy-country-life 2022. 10. 4. 16:12
반응형

 

qsort 함수를 이용한 숫자(정수) 정렬

오름차순 정렬(ascending sort)입니다. 아래쪽에 내림차순 정렬(descending sort)하는 방법이 설명되어 있습니다.

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

int compare(const void* arg1, const void* arg2);

void print(int arr[], int size)
{
    int i;
    for (i = 0; i < size; i++)
        printf("%d ", arr[i]);
    printf("\n");
}

int main(int argc, char** argv)
{
    int i;

    int arr[10] = { 55,33,77,99,22,999,1,77,35,10 };
    int size = 10;

    print(arr, size);

    /* Sort remaining args using Quicksort algorithm: */
    qsort(arr, size, sizeof(int), compare);

    /* Output sorted list: */
    print(arr, size);
}

int compare(const void* arg1, const void* arg2)
{
    return (*(int*)arg1 - *(int*)arg2);     // 오름 차순 정렬 Ascending Sort
    //return _stricmp(*(char**)arg1, *(char**)arg2);
}

 

compare 함수만 아래처럼 바꾸면 내림차순으로 정렬할 수 있습니다.

int compare(const void* arg1, const void* arg2)
{
    return (*(int*)arg2 - *(int*)arg1);      // 내림차순 정렬(Descending Sort)
    // return (*(int*)arg1 - *(int*)arg2);   // 오름차순 정렬(Ascending Sort)
    //return _stricmp(*(char**)arg1, *(char**)arg2);
}

 

반응형