//package poo.ordenadores;
/**
 * clase que implementa  metodos de Ordenador y relaiza ordenamiento del tipo Insertionsorter.
 * @param A Arreglo de objetos comparables que se decea ordenar.
 */
public class InsertionSorter extends Ordenador {

	/**
	* Metodo heredado de Ordenador. 
	*/
	public int getNumComparaciones() {
		return this.num_comparaciones;
	}
	/**
	* Metodo heredado de Ordenador. 
	*/
	public int getNumIntercambios() {
		return this.num_intercambios;
	}

	public void ordenar(Comparable[] A) {
		for (int i=0; i < A.length; i++) {
			/* Insert a[i] into the sorted sublist */
			Comparable v = A[i];
			int j;
			for (j = i - 1; j >= 0; j--) {
				if (((Comparable)A[j]).compareTo(v) <= 0) break;
				A[j + 1] = A[j];
				num_comparaciones++;
			}
			A[j + 1] = v;
			num_intercambios++;
		}

	}

	public String toString() {
		return "INSERTION SORTER";
	}

	
	private int num_intercambios = 0;
	
	private int num_comparaciones = 0;
}
