Idea de algoritmo de clasificación de fusión:
Dividir - conquistar; cada proceso recursivo implica tres pasos. Primero, descomposición: descomponer la secuencia de n elementos que se van a clasificar en dos subsecuencias, cada subsecuencia incluye n/2 elementos.
En segundo lugar, Gobernanza: llame a MergeSort en cada subsecuencia por separado y realice operaciones recursivas. En tercer lugar, Fusione: combine dos subsecuencias ordenadas para generar resultados de clasificación.
public static void mergeSort(int[] a, int[] tmp, int left, int right) { if (izquierda < derecha) { int mid = izquierda + (derecha - izquierda) / 2; mergeSort(a, tmp, left, mid);// Clasificación por la izquierda mergeSort(a, tmp, mid + 1, right);// Clasificación por la derecha merge(a, tmp, left, mid + 1, right);// Fusionar izquierda y derecha} }public static void merge(int[] a, int[] tmp, int left, int rightPos, int right) { int leftEnd = rightPos - 1; int tmpPos = int num = derecha - izquierda + 1 mientras (izquierda <= leftEnd && rightPos <= derecha) { if (a[izquierda] < a[rightPos]) { tmp[tmpPos++] = a[left++] } else { tmp[tmpPos++] = a[rightPos++]; mientras (izquierda <= leftEnd) { tmp[tmpPos++]; ] = a[rightPos++] } for (int i = 0; i < num; i++, derecha--) { a[derecha] = tmp[derecha];Diagrama esquemático del algoritmo de fusión:
Lo anterior es el contenido completo de este artículo, espero que les guste a todos.