c언어 퀵 정렬 함수(qsort)

C언어 퀵 정렬 함수(qsort)

stdlib.h qsort

C언어 stdlib.h에 quick sort함수가 구현되어 있습니다.

void qsort(
   void *base,
   size_t number,
   size_t width,
   int (__cdecl *compare )(const void *, const void *)
);

base=Start of target array./대상 배열

number=Array size in elements./배열의 크기

width=Element size in bytes./요소 크기

compare=Pointer to a user-supplied routine that compares two array elements and returns a value that specifies their relationship./비교함수

아래 글에서 가져왔습니다.

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/qsort?view=vs-2019

 

qsort

qsort In this article --> Performs a quick sort. A more secure version of this function is available; see qsort_s. Syntax void qsort( void *base, size_t number, size_t width, int (__cdecl *compare )(const void *, const void *) ); Parameters base Start of t

docs.microsoft.com

위 사이트를 예시로 코드를 작성했습니다.

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

int compare(const void *one,const void *two){
	if(*(int *)one>*(int *)two)
		return 1;
	else if(*(int *)one<*(int*)two)
		return -1;
	else return 0;
}
int main(){
	int i,j,array[]={24,56,87,98,45,65,47,68,423,546,987};
	printf("---before qsort---\n");
	j=sizeof(array)/sizeof(int);
	for(i=0;i<j;i++)
		printf("%d ",array[i]);
	printf("\n%");
	/*qsort*/
	qsort(array,j,sizeof(int),compare);
	printf("---after qsort---\n");	
	for(i=0;i<j;i++)
		printf("%d ",array[i]);
}

 

퀵정렬 예제 코드 실행하기.

위에 만들어놓은 예제코드를 실행하면 이렇게 출력됩니다.

compare함수의 return 부분의 1과 -1을 바꾸면 이렇게 내림차순으로 출력됩니다.

Designed by JB FACTORY