티스토리 뷰


구현소스


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


int Compare(const void* _elem1, const void* _elem2)
{
	int* elem1 = (int*)_elem1;
	int* elem2 = (int*)_elem2;

	// 오름차순으로 정렬하도록..

	if(*elem1 > *elem2)
		return 1;
	else if(*elem1 < *elem2)
		return -1;
	else
		return 0;
}
void PrintArray(int Data[], int Length){
	int i=0;
	int count=0;
	printf("          ---- Data ----\n");
	for(i=0;i<Length;i++){
		printf("%3d ", Data[i]);
		count++;
		if(count%10==0)
			printf("\n");
	}
}
// void qsort(void *base, size_t num, size_t width, int(_cdec1 *compare)(const void*, const void*) )
// 1. void *base   : 데이터 집합 배열의 주소
// 2. size_t num   : 데이터 요소의 개수
// 3. size_t width : 한 데이터 요소의 크기
// 4. int(_cdec1 *compare)(const void*, const void*)
//   : 비교 함수에 대한 함수 포인터 - 위의 int Compare(const void* _elem1, const void* _elem2) 함수과 같은
//                                   형식을 가져야 한다.
int main(){
	int Data[100];
	int Length = sizeof(Data) / sizeof(int);
	int i=0;

	srand(time(NULL));
	
	for(i=0;i<Length;i++){
		Data[i] = rand()%100;
	}
	PrintArray(Data,Length);
	
	qsort((void*)Data, Length, sizeof(int), Compare);
	printf("******** Quick Sort *********\n");
	PrintArray(Data,Length);
	
	return 0;
}

실행 결과