ORDENACIÓN POR :
INSERCIÓN
COMBINACIÓN
Alumna: Jesica Dávila
UNIVERSIDAD TECNICA PARTICULAR DE LOJA
ORDENACIÓN POR INSERCIÓN
- El algoritmo de ordenación por inserción toma cada elemento a partir del segundo y recorre el vector en sentido inverso ubicando el elemento en su posición correcta haciendo los intercambios necesarios. Cuando termina de ubicar un elemento en su posición correcta, continúa con el siguiente elemento hasta hacer este proceso con todos los elementos del arreglo.
// Algoritmo de ordenacion por insercion
public static void ordenacionInsercion(int[] v) {
final int N = v.length;
for(int i=1; i<N; i++) {
int j=i;
while(j>0 && v[j]<v[j-1] ){
int tmp = v[j];
v[j] = v[j-1];
v[j-1] = tmp;
j--;
}
ORDENACIÓN POR COMBINACIÓN:
Este es basado en la técnica Divide y Vencerás, ordena recursivamente un conjunto de elementos dividiéndolo en dos, ordenando cada una de estas partes en forma independiente y combinando los dos resultados.
public static void ordenacionCombinacion(int[] v) {
final int N = v.length;
if(N<=1) return;
int mitad=N/2;
int[] izq = Arrays.copyOfRange(v, 0, mitad);
int[] der = Arrays.copyOfRange(v, mitad, N);
ordenacionCombinacion(izq);
ordenacionCombinacion(der);
combinar(v, izq, der);
}
public static void combinar(int[] resp, int[] izq, int[] der) {
int i = 0;
int j = 0;
for(int k=0; k<resp.length;k++) {
if(i>=izq.length) { resp[k]=der[j++]; continue; }
if(j>=der.length) { resp[k]=izq[i++]; continue; }
resp[k]=(izq[i]<der[j])?izq[i++]:der[j++];
}
}
Programación
By jesidavila
Programación
- 159