Radix

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Radix as PDF for free.

More details

  • Words: 687
  • Pages: 3
******************************************************************************* #include <math.h> #include <stdio.h> #include <stdlib.h> #define NUMELTS 20 void radixsort(int x[], int n) { int front[10], rear[10]; struct { int info; int next; } node[NUMELTS]; int exp, first, i, j, k, p, q, y; /* Inicializar una lista vinculada */ for (i = 0; i < n-1; i++) { node[i].info = x[i]; node[i].next = i+1; } /* fin del for */ node[n-1].info = x[n-1]; node[n-1].next = -1; first = 0; /* first es la cabeza de la lista vinculada */ for (k = 1; k < 5; k++) { /* Suponer que tenemos n�meros de cuatro d�gitos */ for (i = 0; i < 10; i++) { /*Inicializar colas */ rear[i] = -1; front[i] = -1; } /*fin del for */ /* Procesar cada elemento en la lista */ while (first != -1) { p = first; first = node[first].next; y = node[p].info; /* Extraer el k�simo d�gito */ exp = pow(10, k-1); /* elevar 10 a la (k-1)�sima potencia */ j = (y/exp) % 10; /* Insertar y en queue[j] */ q = rear[j]; if (q == -1) front[j] = p; else node[q].next = p; rear[j] = p; } /*fin del while */ /* En este punto, cada registro est� en su cola bas�ndose en el d�gito k Ahora formar una lista �nica de todos los elementos de la cola. Encontrar el primer elemento. */ for (j = 0; j < 10 && front[j] == -1; j++); ; first = front[j]; /* Vincular las colas restantes */ while (j <= 9) { /* Verificar si se ha terminado */ /*Encontrar el elemento siguiente */

for (i = j+1; i < 10 && front[i] == -1; i++); ; if (i <= 9) { p = i; node[rear[j]].next = front[i]; } /* fin del if */ j = i; } /* fin del while */ node[rear[p]].next = -1; } /* fin del for */ /* Copiar de regreso al archivo original */ for (i = 0; i < n; i++) { x[i] = node[first].info; first = node[first].next; } /*fin del for */ } /* fin de radixsort*/ int main(void) { int x[50] = {NULL}, i; static int n; printf("\nCadena de n�meros enteros: \n"); for (n = 0;; n++) if (!scanf("%d", &x[n])) break; if (n) radixsort (x, n); for (i = 0; i < n; i++) printf("%d ", x[i]); return 0;

} ********************************************************************************** ****************** La mayor parte de los ordenadores digitales representan internamente todos sus datos como representaciones electr�nicas de n�meros binarios, por lo que procesar los d�gitos de las representaciones de enteros por representaciones de grupos de d�gitos binarios es lo m�s conveniente. Existen dos clasificaciones de radix sort: el de d�gito menos significativo (LSD) y el de d�gito m�s significativo (MSD). Radix sort LSD procesa las representaciones de enteros empezando por el d�gito menos significativo y movi�ndose hacia el d�gito m�s significativo. Radix sort MSD trabaja en sentido contrario. Las representaciones de enteros que son procesadas por los algoritmos de ordenamiento se les llamas a menudo "claves", que pueden existir por s� mismas o asociadas a otros datos. Radix sort LSD usa t�picamente el siguiente orden: claves cortas aparecen antes que las claves largas, y claves de la misma longitud son ordenadas de forma l�xica. Esto coincide con el orden normal de las representaciones de enteros, como la secuencia "1, 2, 3, 4, 5, 6, 7, 8, 9, 10". Radix sorts MSD usa orden l�xico, que es ideal para la ordenaci�n de cadenas de caracteres, como las palabras o representaciones de enteros de

longitud fija. Una secuencia como "b, c, d, e, f, g, h, i, j, ba" ser� ordenada l�xicamente como "b, ba, c, d, e, f, g, h, i, j". Si se usa orden l�xico para ordenar representaciones de enteros de longitud variable, entonces la ordenaci�n de las representaciones de los n�meros del 1 al 10 ser� "1, 10, 2, 3, 4, 5, 6, 7, 8, 9", como si las claves m�s c ortas estuvieran justificadas a la izquierda y rellenadas a la derecha con espacios en blanco, para hacerlas tan largas como la clave m�s larga, para el prop�sito de este ordenamiento.

Related Documents

Radix
May 2020 9
Radix
June 2020 8
Radix - Akar.docx
May 2020 18
Radix Sort
June 2020 11
Pb-kopi Radix
May 2020 14