Está en la página 1de 4

Metodos de ordenamiento

El siguiente documento tiene el objetivo de probar diferentes métodos para ordenar números de un arreglo de
datos.

El ambiente de ejecución es desde un IDE de código (IntelliJ IDEA). Desde este se puede ejecutar el lenguaje de
programación Java, el cual se usa para desarrollar los distintos métodos de ordenamiento. Además, el ambiente
también nos provee de un temporizador para validar la demora en el procesamiento de cada programa.

Bubble sort
El método de ordenamiento de burbuja funciona comparando pares de elementos adyacentes y realizando
intercambios si están en el orden incorrecto. Este proceso se repite hasta que todo el arreglo esté ordenado.

public class Main {

public static void bubbleSort(int[] arr) {


int n = arr.length;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// Intercambiar arr[j] y arr[j+1]
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}

public static void main(String[] args) {


int[] nums = new int[]{210, 93, 669, 133, 520, 650, 717, 120,
902, 586, 332, 277, 564, 991, 154, 877, 729, 954, 971, 112, 784, 549, 390,
16, 513, 629, 563, 282, 474, 246, 941, 547, 905, 50, 871, 475, 157, 865, 370,
249, 700, 933, 98, 97, 342, 925, 924, 665, 817, 672, 821, 615, 204, 750, 551,
359, 788, 970, 971, 20, 150, 358, 938, 757, 38, 853, 605, 290, 64, 18, 916,
241, 232, 516, 400, 376, 590, 902, 140, 793, 795, 47, 876, 542, 659, 355,
926, 176, 970, 430, 273, 190, 14, 335, 570, 812, 563, 459, 870, 173};
bubbleSort(nums);
System.out.printf("Arreglo ordenado: %s", Arrays.toString(nums));
}

Resultado
Después de ejecutar el programa, se obtuvo el arreglo con los números ordenados de menor a mayor.
Insertionsort
En el ordenamiento por inserción, se construye una parte ordenada del arreglo uno por uno, insertando
elementos no ordenados en su posición correcta dentro de la parte ordenada. Es eficiente para arreglos
pequeños o casi ordenados.

public class Main {

public static void insertionSort(int[] arr) {


int n = arr.length;
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}

public static void main(String[] args) {


System.out.println("--------- INSERTION SORT ---------");
int[] nums = new int[] {210, 93, 669, 133, 520, 650, 717, 120,
902, 586, 332, 277, 564, 991, 154, 877, 729, 954, 971, 112, 784, 549, 390,
16, 513, 629, 563, 282, 474, 246, 941, 547, 905, 50, 871, 475, 157, 865, 370,
249, 700, 933, 98, 97, 342, 925, 924, 665, 817, 672, 821, 615, 204, 750, 551,
359, 788, 970, 971, 20, 150, 358, 938, 757, 38, 853, 605, 290, 64, 18, 916,
241, 232, 516, 400, 376, 590, 902, 140, 793, 795, 47, 876, 542, 659, 355,
926, 176, 970, 430, 273, 190, 14, 335, 570, 812, 563, 459, 870, 173};
insertionSort(nums);
System.out.printf("Arreglo ordenado: %s", Arrays.toString(nums));
}

Resultado
Después de ejecutar el programa, se obtuvo el arreglo con los números ordenados de menor a mayor.
Quicksort
El ordenamiento rápido es un algoritmo de divide y vencerás. Se elige un elemento llamado "pivote" y se
reorganizan los elementos del arreglo de manera que los elementos más pequeños que el pivote estén a su
izquierda y los elementos más grandes estén a su derecha. Luego, se aplica el mismo proceso
recursivamente a las dos subpartes del arreglo.

public class Main {

public static int partition(int[] arr, int low, int high) {


int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp;
return i + 1;
}

public static void quickSort(int[] arr, int low, int high) {


if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}

public static void main(String[] args) {


System.out.println("--------- QUICK SORT ---------");
int[] nums = new int[] {210, 93, 669, 133, 520, 650, 717, 120,
902, 586, 332, 277, 564, 991, 154, 877, 729, 954, 971, 112, 784, 549, 390,
16, 513, 629, 563, 282, 474, 246, 941, 547, 905, 50, 871, 475, 157, 865, 370,
249, 700, 933, 98, 97, 342, 925, 924, 665, 817, 672, 821, 615, 204, 750, 551,
359, 788, 970, 971, 20, 150, 358, 938, 757, 38, 853, 605, 290, 64, 18, 916,
241, 232, 516, 400, 376, 590, 902, 140, 793, 795, 47, 876, 542, 659, 355,
926, 176, 970, 430, 273, 190, 14, 335, 570, 812, 563, 459, 870, 173};
int n = nums.length;
quickSort(nums, 0, n - 1);
System.out.printf("Arreglo ordenado: %s", Arrays.toString(nums));
}
}

Resultado
Después de ejecutar el programa, se obtuvo el arreglo con los números ordenados de menor a mayor.

Comparación de métodos
Bubblesort Insertionsort Quicksort

635ms 505ms 469ms

También podría gustarte