c언어 퀵 정렬 함수(qsort)
- 프로그래밍/알고리즘
- 2020. 9. 3.
C언어 퀵 정렬 함수(qsort)
오늘은 stdlib.h 에서 제공하는 qsort 함수에 대한 내용입니다.
[프로그래밍/알고리즘] - 정렬 알고리즘 - 퀵 정렬 [Quick Sort]
정렬 알고리즘 - 퀵 정렬 [Quick Sort]
정렬 알고리즘 - 퀵 정렬 [Quick sort] 오늘은 정렬 알고리즘 중 하나인 퀵 정렬(Quick Sort)에 관한 내용입니다. (퀵 정렬을 간단하게 소개하고 예제) 퀵 정렬(Quick Sort)이란? n개의 데이터를 정렬할 때 ��
intunknown.tistory.com
- 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
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을 바꾸면 이렇게 내림차순으로 출력됩니다.