병합 정렬

void MergeSort( int arg[], int left, int right) {
	int mid;
	if ( left < right ) {
		mid = ( left + right ) / 2;
		MergeSort(arg, left, mid);
		MergeSort(arg, mid + 1, right);
		Merge(arg, left, mid+1, right);
	}
}
// 병합정렬 병합/합병 함수 
void Merge(int arr[], int left, int mid, int right) {
	int temp[10] = { 0, };
	int index = left;
	int low = left;
	int high = mid;

	while ((low < mid) && (high <= right)) {
		if (arr[low] < arr[high]) {
			temp[index] = arr[low];
			low++;
		}
		else {
			temp[index] = arr[high];
			high++;
		}
		index++;
	}

	if (low < mid) {
		for (low = low; low < mid; low++, index++) {	// 앞쪽 배열에 남은것 모두 가져오기
			temp[index] = arr[low];
		}
	}
	if (high <= right) {
		for (mid = high; mid <= right; mid++, index++) {	// 뒤쪽 배열에 남은것 모두 가져오기
			temp[index] = arr[mid];
		}
	}

	for (index = left; index <= right; index++) {
		arr[index] = temp[index];
	}
	Display(arr, 10);
}

퀵 정렬

// 퀵 정렬 함수 
void QuickSort(int arg[], int left, int right) {
	int pivot = 0;

	if (left <= right) {
		pivot = QuickPartition(arg, left, right);	// 퀵 분할
		QuickSort(arg, left, pivot - 1);		// 피벗보다 왼쪽 영역 정렬
		QuickSort(arg, pivot + 1, right);		// 피벗보다 오른쪽 영역 정렬
	}
}