c algoritmo de clasificación de orden de diccionario
Diseño de algoritmo:
(1) Defina una matriz de caracteres bidimensionales para almacenar los nombres de n estudiantes.
Nombre del personaje [N] [13];
(2) Utilice el método de clasificación selectiva para ordenar N cadenas a través de la función de comparación strcmp().
③Resultados de salida
Idea de clasificación selectiva
(1) En el primer paso, seleccione el registro con el valor de palabra clave más pequeño de n registros como El primer registro;
k = 0;
for (j = 0 1; j si (k! = 0) { t = a[k]; a[k] = a[I] ; a[I] = t;}/*Intercambio de unidad K y unidad 0*/
(2) En el segundo paso, de los N-1 registros restantes Seleccione el registro con el valor clave más pequeño como segundo registro
k = 1;
for (j = 1 1; j if (k! = 1) { t = a[k]; a[k] = a[I]; a[I] = t;}
(3) Generalmente, en el paso I, el registro con el valor clave más pequeño se selecciona como el registro I (I = 1, 2). ,...n-1) se extrae del resto n-I 1
k = I-1
for (j = I; j if (k! = 1) { t = a [k]; a [k] = a [I]; a [I] = t;
Para una matriz con n elementos A. El segmento de programa para seleccionar y ordenar en lenguaje C. es:
for(I = 0; i { k = i
for (j = I 1; j if (k ! = I) { t = a[k]; a[k] = a[I]; a[I] = t;}
}
Exactamente similar, usaremos la matriz de caracteres bidimensional char name[N][ 13] se considera como N matrices de caracteres unidimensionales:
Nombre[0], nombre[1], nombre[2],..., nombre[N-1] ].
En la sección del programa de clasificación de selección, compare dos números:
if (a[j] cambia a: if (strcmp(nombre[j], nombre[k]) p> p>
Y la declaración de intercambio de datos: { t = a[k]; a[k] = a[I]; a[I] = t;}
Cambiar a: { strcpy(t , nombre[k]); strcpy(nombre[k], nombrea[I]); strcpy(nombre[I], t);}
Lista completa de programas
# Contiene "stdio.h"
#Contiene "string.h"
main()
{ cahr nombre[10][13], temp [13 ]; int I;
for(I = 0; I lt10; i ){
Printf ("Ingrese los nombres de d estudiantes:\n", I 1
get(nombre[I]);
}
for(I = 0;ilt9;i)
{ k = I;
for (j = I 1; j lt10; j ) if (strcmp (nombre[j], nombre[k]) lt;0)k = j;
If (k! = I) { strcpy (temp, nombre [k]);
strcpy (nombre [k], nombre [I]);
}
}
printf("Los nombres de 10 estudiantes están ordenados en el diccionario: \n"); I = 0; i lt10; i) printf ("\n s", nombre [I]);