English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
en este ejemplo, aprenderemos a ejecutar el algoritmo de ordenamiento por merger en Java.
antes de aprender el algoritmo de ordenamiento por merger en Java, asegúrate de entender el principio de funcionamiento del algoritmo de ordenamiento por merger.
import java.util.Arrays; //ordenamiento por merger en Java class Main { //combinar los subarreglos L y M en el array void merge(int array[], int p, int q, int r) { int n1 = q - p + 1; int n2 = r - q; int L[] = new int[n1]; int M[] = new int[n2]; //llenar los arreglos izquierdo y derecho for (int i = 0; i < n1; i++){ L[i] = array[p + i]; } for (int j = 0; j < n2; j++){ M[j] = array[q + 1 + j]; } //mantener el índice actual de los subarreglos y el array principal int i, j, k; i = 0; j = 0; k = p; //hasta que alcanzamos el extremo de L o M, seleccionando el mayor //elementos L y M, y ponerlos en la posición correcta en A[p..r]. //ordenamiento descendente //usar if(L[i] >= <[j]) while (i < n1 && j < n2) { if (L[i] <= M[j]) { array[k] = L[i]; i++; } else { array[k] = M[j]; j++; } k++; } // cuando se agote un elemento de L o M // colocar el resto de elementos en A[p..r] while (i < n1) { array[k] = L[i]; i++; k++; } while (j < n2) { array[k] = M[j]; j++; k++; } } // dividir el array en dos subarreglos, ordenarlos y combinarlos void mergeSort(int array[], int left, int right) { if (left < right) { //m es el punto en el que el array se divide en dos subarreglos int mid = (left + right) / 2; //la llamada recursiva para cada subarreglo mergeSort(array, left, mid); mergeSort(array, mid + 1, right); //Combinar subarrays ya ordenados merge(array, left, mid, right); } } public static void main(String args[]) { //Crear un array no ordenado int[] array = { 6, 5, 12, 10, 9, 1 }; Main ob = new Main(); //Llamar al método mergeSort() //Enviar parámetros: array, primer índice y último índice ob.mergeSort(array, 0, array.length - 1); System.out.println("Array ordenado:"); System.out.println(Arrays.toString(array)); } }
Salida1
Array desordenado: [6, 5, 12, 10, 9, 1] Array ordenado: [1, 5, 6, 9, 10, 12]
Aquí, los elementos del array están ordenados en orden ascendente. Si se desea ordenar los elementos en orden descendente, se puede cambiar el código dentro del primer bucle while del método merge():
Cambiar el menor por mayor if (L[i] >= M[j]) {