All pastes #793582 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-11-22 12:16 UTC
rendered paste body
#include <stdio.h>

void merge(int numbers[], int temp[], int left, int mid, int right);

int main()
{
	int Polje[11]= {3,5,15,28,30,6,10,14,22,43,50};
	int B[11];
	int i;

	// ispis nesortiranih brojeva
	printf("\nNesortirani brojevi: ");
	for (i = 0; i < 11; i++) 
		printf("%d ", Polje[i]);

	merge(Polje, B, 0, 5, 10);

	// ispis sortiranih brojeva
	printf("\nSortirani brojevi: ");
	for (i = 0; i < 11; i++) 
		printf("%d ", Polje[i]);

	// zavrsili smo
	printf("\nKraj\n");
	return 0;
}

void merge(int numbers[], int temp[], int left, int mid, int right)
{
	int i, left_end, num_elements, tmp_pos;

	left_end = mid - 1;
	tmp_pos = left;
	num_elements = right - left + 1;

	while ((left <= left_end) && (mid <= right)) {
		if (numbers[left] <= numbers[mid]) {
			temp[tmp_pos] = numbers[left];
			tmp_pos = tmp_pos + 1;
			left = left +1;
		}
		else {
			temp[tmp_pos] = numbers[mid];
			tmp_pos = tmp_pos + 1;
			mid = mid + 1;
		}
	}

	while (left <= left_end) {
		temp[tmp_pos] = numbers[left];
		left = left + 1;
		tmp_pos = tmp_pos + 1;
	}

	while (mid <= right) {
		temp[tmp_pos] = numbers[mid];
		mid = mid + 1;
		tmp_pos = tmp_pos + 1;
	}

	for (i=0; i <= num_elements; i++) {
		numbers[right] = temp[right];
		right = right - 1;
	}
}