C언어 qsort 함수 (C언어 C11 C99)

2021. 10. 13. 20:16·C언어/개념 및 정리
반응형

정렬문제를 풀때는 보통 이중 반복문으로 쉽게 풀수 있으나, 배열의 크기와 숫자가 커지면 시간초과가 나온다.

그럴때는 qsort함수를 사용하면 된다.

 

qsort함수는 퀵 정렬 함수라고도 불린다.

stdlib.h를 헤더로 필요로 하고, qsort(정렬할 배열, 요소개수, 요소크기, 비교함수); 이렇게 구성된다.

1
qsort(num, sizeof(num) / sizeof(int), sizeof(int), compare);
cs

비교함수는 오름차순으로 할때는

a>b일때는 return 양의 정수, a<b일때는 return 음의 정수, a == b일때는 return 0하면 된다.

1
2
3
4
5
6
7
8
9
10
int compare(const void *a, const void *b)
{
    int num1 = *(int *)a;
    int num2 = *(int *)b;
    if (num1 < num2)
        return -1;
    if (num1 > num2)
        return 1;
    return 0;
}
Colored by Color Scripter
cs

이때 함수 만들때는 constvoid를 이용해 상수 지시 포인터 2개를 만들어 준다.

그리고 밑에 변수의 단위에 맞춰서 포인터를 한번 더 만들어준다.

 

 

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
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b)
{
    int num1 = *(int *)a;
    int num2 = *(int *)b;
    if (num1 < num2)
        return -1;
    if (num1 > num2)
        return 1;
    return 0;
}
int main()
{
    int num[10] = { 0, };
    for (int a = 0; a < 10; a++)
    {
        scanf("%d", &num[a]);
    }
    qsort(num, sizeof(num) / sizeof(int), sizeof(int), compare);
    for (int i = 0; i < 10; i++)
    {
        printf("%d\n", num[i]);
    }
    return 0;
}
cs

정수 10개를 호출해 오름차순으로 출력하는 코딩이다.

반응형
'C언어/개념 및 정리' 카테고리의 다른 글
  • (C언어) 문자열 함수의 모든 것
  • C언어 카운팅 정렬 단순정리 & 백준(S5) 수 정렬하기 (C언어 C11 C99)
  • (C언어)DP Dynamic Programming 설명
  • (정보) 2진수를 10진수로 바꾸는 방법 (C언어, C11,C99)
코딩하는_대학생
코딩하는_대학생
Java Developer, Open Source Enthusiast, Proud Son
  • 코딩하는_대학생
    코딩하는 대학생에서 개발자까지
    코딩하는_대학생
  • 전체
    오늘
    어제
    • 분류 전체보기 (216)
      • 코딩하는 대학생의 책 추천 (8)
        • 클린코드 (5)
        • 헤드퍼스트 디자인패턴 (3)
      • Backend (6) N
        • Spring (14)
        • AWS (3)
        • 회고 (4)
        • Redis (5)
        • 다양한 시각에서 바라본 백엔드 (3)
      • Python (35)
        • 개념 및 정리 (15)
        • 백준 문제풀이 (20)
      • JAVA (17)
        • 개념 및 정리 (14)
        • 백준 문제풀이 (2)
      • 왜? (7)
      • C언어 (42)
        • 개념 및 정리 (9)
        • 백준 문제풀이 (32)
      • 개인 공부 (27)
        • 대학 수학 (5)
        • 대학 영어 (10)
        • 시계열데이터 처리 및 분석 (5)
        • 컴퓨터 네트워크 (6)
        • 운영체제 (1)
      • 솔직 리뷰 (23)
        • 꿀팁 (6)
        • IT기기 (1)
        • 국내 여행 (7)
        • 맛집 (2)
        • 알바 리뷰 (2)
      • 대외활동 (17)
        • 체리피우미 3기 (4)
        • 꿀잠이들 6기 (13)
      • 음식 평가 (1)
      • 일상 & 근황 (2)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩하는_대학생
C언어 qsort 함수 (C언어 C11 C99)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.