c언어 퀵 정렬 함수(qsort)
- 프로그래밍/알고리즘
- 2020. 9. 3.
250x250
C언어 퀵 정렬 함수(qsort)
안녕하세요.
오늘은 stdlib.h 에서 제공하는 qsort 함수에 대한 내용입니다.
[프로그래밍/알고리즘] - 정렬 알고리즘 - 퀵 정렬 [Quick Sort]
- stdlib.h 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
위 사이트를 예시로 코드를 작성했습니다.
#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을 바꾸면 이렇게 내림차순으로 출력됩니다.