int main() {
	setlocale(LC_ALL, "Russian");// Чтобы выводился русский язык в консоли

	// неубывающие массивы
	int A[nA];
	int B[nB];
	int C[nA+nB]; // сюда запишутся результат слияния

	// считываем массивы
	printf("Введите массив A из 3 элементов:\n");
	for (int i = 0; i < nA; i++)
		scanf("%i", &A[i]);

	printf("Введите массив B из 3 элементов:\n");
	for (int i = 0; i < nB; i++)
		scanf("%i", &B[i]);

	// находим слияние
	int* Cnew = Merger(A, B, C); 
	printf("Резулттат слияния:\n");
	for (int i = 0; i < nA+nB; i++) {
		printf("%d ", Cnew[i]);
	}

	_getch();
	return 0;
}
Exemplo n.º 2
0
void MergeSort(int A[], int tmp[], int left, int right)
{
	int center = (left + right) / 2;
	if (left < right)
	{
		MergeSort(A, tmp, left, center);
		MergeSort(A, tmp, center + 1, right);
		Merger(A, tmp, left, center+1, right);  //
	}
}
Exemplo n.º 3
0
int _mergSort(int arr[], int tmp[], int left, int right)
{
	int mid, inversion_Count = 0;
	if(right>left)
	{
		mid = (left + right)/2;
		inversion_Count += _mergSort(arr, tmp, left, mid);
		inversion_Count += _mergSort(arr, tmp, mid+1, right);

		inversion_Count += Merger(arr, tmp, left, mid, right);
	}
	return inversion_Count;
}