#include <stdio.h>
#include "common.h"

/* O código a sequir é baseado no material do livro "Algorithms, Data
 * Structures, and Problem Solving With C", de  Mark Allen Weiss */

void insertion_sort(int A[], int n)
{
	int i,p,tmp;

	for (p = 2; p < n; p++){
		tmp = A[p];
		for ( i = p ; tmp < A[i - 1]; i--){
			A[i] = A[i-1];
			COUNT_SWAP;
			COUNT_COMP;
		}
		A[i]=tmp;
		COUNT_SWAP;
	}
}



void partial_insertion_sort(int A[],int n, int k)
{
	int i;
	/*int tmp;*/
	
	insertion_sort(A, k);
	for (i = k; i < n; i++ ){
		if (A[k - 1] > A[i]){
			COUNT_COMP;
			swap( &A[i], &A[k-1] );
			/*tmp  = A[i];
			A[i] = A[k - 1];
			A[k - 1] = tmp;*/
			insertion_sort(A,k);
		}
	}
	
}


/*int main()
{
	unsigned int x;
	int v[20];

	for (x = 0; x < 20; x++)
		v[x] = x;
	
	Permut(v, 20);
	printf("RAND >");
	for (x = 0; x < 20; x++)
		printf("%02d ", v[x]);
	printf("\n");
	
	partial_insertion_sort(v, 20, 11);
	printf("SORT >");
	for (x = 0; x < 20; x++)
		printf("%02d ", v[x]);
	printf("\n");	
	
	return 0;
}*/
