본문 바로가기
backjoon/여러가지

qsort함수

by 정구지개발자 2023. 1. 28.
728x90
  • <헤더파일> 

        stdlib.h

  • <기본형태>
void qsort (void *base, size_t nel, size_t width, int (*compare)(const void *, const void *)

       base = 정렬하고자 하는 배열의 포인터

       nel = 배열의 각 원소들의 총 수

      width = 배열에서 원소 하나의 크기

      (*compare) = 비교를 수행할 함수 포인터

 

  • <비교함수> 

       비교함수는 -1, 0, 1 중 하나 반환해야한다.

       오름차순 비교함수만든 예제코드)

int	compare(const void *first, const void *second)
{
	if (*(int*)first > *(int*)second)
		return (1);
	else if (*(int*)first < *(int*)second)
		return (-1);
	else
		return (0);
}

 

  • <qsort 예제 함수>

       오름차순 비교함수를 이용해서 qsort함수 구현

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

int	compare(const void *first, const void *second)
{
	if (*(int*)first > *(int*)second)
		return (1);
	else if (*(int*)first < *(int*)second)
		return (-1);
	else
		return (0);
}

int	main()
{
	int	i;
	int	arr[7] = {1, 4, 30, 5, 10, 22, 56};

	// 정렬 전
	i = 0;
	while (i < 7)
	{
		printf("%d ", arr[i]);
		i++;
	}
	printf("\n");

	// 정렬 후
	qsort(arr, 7, sizeof(int), compare);
	i = 0;
	while (i < 7)
	{
		printf("%d ", arr[i]);
		i++;
	}
	return (0);
}

위의 결과

첫번째 줄은 qsort함수 사용전

두번쨰 줄은 qsort함수 사용해서 오름차순으로 정렬한 결과

728x90

'backjoon > 여러가지' 카테고리의 다른 글

백준 1934 최소공배수 c언어  (0) 2023.01.29
유클리드 호제법 c언어 구현하기  (0) 2023.01.29
백준 1037 약수 c언어  (0) 2023.01.28
백준 5086 c언어  (0) 2023.01.27
백준 2556번 최대값 c언어  (0) 2023.01.23

댓글