Desc :

void qsort( void *base, size_t num, size_t width, int (*compare)(const void *elem1, const void *elem2) );

base - 정렬할 배열의 번지

num - 총 배열 요소의 개수

width - 배열 요소가 차지하는 크기

compare - 비교함수 포인터

elem1, elem2의 비교결과를 가지고 배열의 값을 앞뒤로 정렬한다

첫 번째 파라미터가 더 클 때 양수 반환,

첫 번째 파라미터가 더 작을 때 음수 반환,

같을 때 0을 반환하게 만든다 (내림차순일때는 반대로)

 

++문자열의 배열이라면, strcmpy 함수를 넣어 사용할 수 있다

Source Code :

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

int intcmp(const void* v1, const void* v2);	// 비교에 사용될 함수 선언

void main()
{
	int i;
	int array[5] = { 4,2,1,5,3 };

	qsort(array, 5, sizeof(array[0]), intcmp);

	for (i = 0; i < 5; i++)	// 정렬된 배열 출력
	{
		printf("%d ", array[i]);
	}
}

int intcmp(const void* v1, const void* v2)	// 비교함수 정의
{
	int cmpvalue1, cmpvalue2;

	cmpvalue1 = *(int*)v1;	//void형 포인터 쓰기전 데이터타입을 명시해주고, 포인터의 값을 대입
	cmpvalue2 = *(int*)v2;

	return cmpvalue1 - cmpvalue2;	// 오름차순 정렬
}

 


Result :

+ Recent posts