C:TIL-quick sort

Nayeon Kim·2022년 10월 3일
1

c language

목록 보기
9/9

quick sort는 정렬이 필요할 때 자주 사용하는 알고리즘이다.(성능-O(nlogn)

quicksort를 코드로 작성하였을 경우,

void swap(int A[], int a, int b)
{
	int temp = A[a];
	A[a] = A[b];
	A[b] = temp;
}

int partition(int A[], int p, int r)
{
	// 배열 A[p..r]의 원소들을 A[r]을 기준으로 양족으로 재배치하고 
	// A[r]이 자리한 위치를 return한다.
	int i, j;
	i = p - 1; j = p;

	while (j != r) {
		if (A[j] < A[r])
			swap(A, ++i, j);
		j++;
	}
	swap(A, ++i, r);
	return i;
}

void quickSort(int A[], int p, int r)
{
	int q;
	if (p < r) {
		q = partition(A, p, r);
		printList(A, 9);
		quickSort(A, p, q - 1);
		quickSort(A, q + 1, r);
	}
}

매번 quicksort 알고리즘을 코드로 구현하기 번거롭기 때문에,
간편하게 stdlib.h에 있는 qsort() 함수를 사용할 수 있다.

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

int static compare (const void* first, const void* second) 
//오름차순. 내림차순의 경우 등호 방향 바꾸기
{
    if (*(int*)first > *(int*)second)
        return 1;
    else if (*(int*)first < *(int*)second)
        return -1;
    else
        return 0;
}

사용예시-> qsort(array, array_size, sizeof(int), compare)

profile
Department of Computer Science

0개의 댓글