Red de conocimiento informático - Conocimiento del nombre de dominio - Teclas de acceso directo de programación de cable lento de Qinghong

Teclas de acceso directo de programación de cable lento de Qinghong

algoritmo de paquete;

clase pública MergeSort {

// suma larga estática privada = 0;

/**

* 

* Fusión bidireccional

* Principio: fusionar dos listas ordenadas en una lista ordenada

*< /pre>

*

* @param a

* @param s

* El comienzo de la primera lista ordenada Subíndice

* @param m

* El subíndice inicial de la segunda lista ordenada

* @param t

* El subíndice final de la segunda lista ordenada

*

*/

fusión de vacío estático privado (int[] a, int s, int m, int t) {

int[] tmp = new int [t - s + 1];

int i = s, j = m, k = 0

mientras (i 

si (a[i]<=a[j]){

tmp[k]=a [i];

k++;

i++;

} else {

tmp[k] = a[j];

j++;

k++;

}

}

mientras (yo 

tmp[k] = a[ i];

i++;

k++;

}

mientras (j <= t) {

tmp[k] = a[j];

j++;

k++;

}

System.arraycopy(tmp, 0, a, s, tmp.length);

}

/**

p>

* @param a

* @param s

* @param len

* La longitud del conjunto ordenado para cada fusión

* p>

*/

public static void mergeSort(int[] a, int s, int len) {

int size = a.length;

int mid = tamaño /(len <<1);

int c = tamaño &((len <<1) -1);

> // -------Finalizar el algoritmo cuando solo queda un conjunto ordenado-------//

if (mid == 0)

return;

//------Realizar una ordenación por combinación-------//

for (int i = 0; i 

s=i

}

// -------Fusiona los números restantes y el último conjunto ordenado--- ----//

if (c != 0)

merge(a, tamaño - c - 2 *len, tamaño - c, tamaño - 1);

// ---- ---Ejecutar recursivamente el siguiente orden de combinación------//

mergeSort(a, 0, 2 *len);

}

public static void main(String[] args) {

int[] a = new int[] {4, 3, 6, 1, 2, 5 };

mergeSort (a, 0, 1);

for (int i = 0; i < a.length; ++i) {

System.out.print(a[i] + " ");

}

}

}