Dada una array de tamaño n, la tarea es ordenar esta array usando punteros en C. Ejemplos:
Input: n = 5, arr[] = {0, 23, 14, 12, 9} Output: {0, 9, 12, 14, 23} Input: n = 3, arr[] = {7, 0, 2} Output: {0, 2, 7}
Enfoque: la array se puede obtener con la ayuda de punteros con la variable de puntero apuntando a la dirección base de la array . Por lo tanto, para ordenar la array usando punteros, necesitamos acceder a los elementos de la array usando el formato (puntero + índice) .
A continuación se muestra la implementación del enfoque anterior:
C
#include <stdio.h> // Function to sort the numbers using pointers void sort(int n, int* ptr) { int i, j, t; // Sort the numbers using pointers for (i = 0; i < n; i++) { for (j = i + 1; j < n; j++) { if (*(ptr + j) < *(ptr + i)) { t = *(ptr + i); *(ptr + i) = *(ptr + j); *(ptr + j) = t; } } } // print the numbers for (i = 0; i < n; i++) printf("%d ", *(ptr + i)); } // Driver code int main() { int n = 5; int arr[] = { 0, 23, 14, 12, 9 }; sort(n, arr); return 0; }
Producción:
0 9 12 14 23
Complejidad de tiempo: O(n 2 ), donde n representa el tamaño de la array dada.
Espacio auxiliar: O(1), no se requiere espacio adicional, por lo que es una constante.