본문으로 건너뛰기
  1. Posts/

C언어 qsort()함수

·
C
작성자
hw5e
page.hw5e.cc

C언어의 퀵 정렬 함수는 stdlib.h에 정의되어있다.

void qsort(void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar)

qsort 함수의 매개변수는 순서대로 배열의 시작지점의 포인터, 원소의 개수, 원소의 자료형의 크기, 두 값을 비교하는 함수이고 함수를 실행하면 배열이 정렬된다.

이 함수를 사용하려면 두 대상을 비교하는 함수를 따로 만들어야 한다. 비교함수의 반환값이 첫번째 대상이 두번째 대상보다 클 때 양의 정수 작을 때 음의 정수를 반환하게 만들면 배열이 오름차순으로 정렬하게 되고 반대로 하면 내림차순으로 정렬 된다.

이때 비교함수의 매개변수는 비교하는 대상의 자료형에 관계없이 void*야 한다.

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

int compa(const void* a,const void* b){
    if (*(int*)a > *(int*)b)
    return 1;
    else
    return -1;

}



int main(void){

    int i;
    int table[7] ={2,3,-5,7,-3,3,12}; 
    qsort(table,7,sizeof(int),compa);

    for(i=0;i<7;i++){

        printf("%d\n",table[i]);
    }

}

출력

-5
-3
2
3
3
7
12

https://en.cppreference.com/w/c/algorithm/qsort

Reply by Email