Métodos de ordenamiento de datos

En C, existen varios métodos de ordenamiento para organizar los datos en arreglos o listas. Los algoritmos de ordenamiento se pueden clasificar en dos tipos principales: ordenamiento simple y ordenamiento eficiente. Aquí te explico algunos de los métodos más comunes, tanto sencillos como más avanzados.

---

Métodos de Ordenamiento Simples

Estos métodos son más fáciles de implementar, pero suelen ser menos eficientes para arreglos grandes.

 1. Ordenamiento de Burbuja (Bubble Sort)

   - Compara cada par de elementos adyacentes en el arreglo y los intercambia si están en el orden incorrecto.

   - Este proceso se repite hasta que todo el arreglo esté ordenado.

   - Complejidad: O(n²).

   Ejemplo de código:

   ```c

   void bubbleSort(int arr[], int n) {

       for (int i = 0; i < n - 1; i++) {

           for (int j = 0; j < n - i - 1; j++) {

               if (arr[j] > arr[j + 1]) {

                   // Intercambia arr[j] y arr[j + 1]

                   int temp = arr[j];

                   arr[j] = arr[j + 1];

                   arr[j + 1] = temp;

               }

           }

       }

   }

   ```

2. Ordenamiento por Selección (Selection Sort)

   - Busca el elemento más pequeño (o más grande) en el arreglo y lo coloca en su posición correcta.

   - Este proceso se repite para cada posición en el arreglo.

   - Complejidad: O(n²).

Ejemplo de código:

   ```c

   void selectionSort(int arr[], int n) {

       for (int i = 0; i < n - 1; i++) {

           int minIndex = i;

           for (int j = i + 1; j < n; j++) {

               if (arr[j] < arr[minIndex]) {

                   minIndex = j;

               }

           }

           // Intercambia arr[i] y arr[minIndex]

           int temp = arr[i];

           arr[i] = arr[minIndex];

           arr[minIndex] = temp;

       }

   }

   ```

 3. Ordenamiento por Inserción (Insertion Sort)

   - Toma un elemento y lo inserta en su posición correcta en una lista ya ordenada.

   - Funciona bien para listas pequeñas o casi ordenadas.

   - Complejidad: O(n²).

   Ejemplo de código:

   ```c

   void insertionSort(int arr[], int n) {

       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;

       }

   }

 ` ```

 
 4.Ordenamiento por Shell

#include <stdio.h>


void shellSort(int arr[], int n) {

    // Empieza con un intervalo grande y lo reduce

    for (int gap = n / 2; gap > 0; gap /= 2) {

        // Realiza el ordenamiento por inserción con el intervalo 'gap'

        for (int i = gap; i < n; i++) {

            int temp = arr[i];

            int j;

            // Desplaza los elementos ordenados para insertar arr[i]

            for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {

                arr[j] = arr[j - gap];

            }

            arr[j] = temp;

        }

    }

}


void printArray(int arr[], int n) {

    for (int i = 0; i < n; i++) {

        printf("%d ", arr[i]);

    }

    printf("\n");

}


int main() {

    int arr[] = {12, 34, 54, 2, 3};

    int n = sizeof(arr) / sizeof(arr[0]);


    printf("Arreglo original: \n");

    printArray(arr, n);


    shellSort(arr, n);


    printf("Arreglo ordenado: \n");

    p

rintArray(arr, n);


    return 0;

}

© 2024 Todos los derechos reservados
Lenguaje C
Creado con Webnode Cookies
¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar