Dada una array arr[] de tamaño N, la tarea es ordenar esta array en orden ascendente en C.
Ejemplos:
Input: arr[] = {0, 23, 14, 12, 9} Output: {0, 9, 12, 14, 23} Input: arr[] = {7, 0, 2} Output: {0, 2, 7}
Enfoque:
Hay muchas formas en las que la array se puede ordenar en orden ascendente, como:
- Clasificación de selección
- Ordenamiento de burbuja
- Ordenar por fusión
- Clasificación Radix
- Clasificación por inserción , etc.
Para simplificar, utilizaremos la ordenación por selección en este artículo.
La array se puede ordenar en orden ascendente encontrando repetidamente el elemento mínimo (considerando el orden ascendente) de la parte no ordenada y colocándolo al principio. El algoritmo mantiene dos subarreglos en un arreglo dado.
- El subarreglo que ya está ordenado.
- Subarreglo restante que no está ordenado.
En cada iteración del ordenamiento por selección, el elemento mínimo (considerando el orden ascendente) del subarreglo no ordenado se selecciona y se mueve al subarreglo ordenado.
A continuación se muestra la implementación del enfoque anterior:
C
// C program to sort the array in an // ascending order using selection sort #include <stdio.h> void swap(int* xp, int* yp) { int temp = *xp; *xp = *yp; *yp = temp; } // Function to perform Selection Sort void selectionSort(int arr[], int n) { int i, j, min_idx; // One by one move boundary of unsorted subarray for (i = 0; i < n - 1; i++) { // Find the minimum element in unsorted array min_idx = i; for (j = i + 1; j < n; j++) if (arr[j] < arr[min_idx]) min_idx = j; // Swap the found minimum element // with the first element swap(&arr[min_idx], &arr[i]); } } // Function to print an array void printArray(int arr[], int size) { int i; for (i = 0; i < size; i++) printf("%d ", arr[i]); printf("\n"); } // Driver code int main() { int arr[] = { 0, 23, 14, 12, 9 }; int n = sizeof(arr) / sizeof(arr[0]); printf("Original array: \n"); printArray(arr, n); selectionSort(arr, n); printf("\nSorted array in Ascending order: \n"); printArray(arr, n); return 0; }
Original array: 0 23 14 12 9 Sorted array in Ascending order: 0 9 12 14 23
Complejidad del tiempo: O(N 2 )
Espacio Auxiliar: O(1)