Colección de citas famosas - Slogan de motivación - ¿Quién sabe cómo ordenar palabras clave dobles en lenguaje C? Entra y echa un vistazo.

¿Quién sabe cómo ordenar palabras clave dobles en lenguaje C? Entra y echa un vistazo.

Mi idea es utilizar un método de clasificación estable (yo uso un método de burbuja modificado), ordenando primero las palabras clave secundarias y luego las palabras clave principales. El código es el siguiente, donde Sort_1 integra las dos clasificaciones y Sort realiza las dos clasificaciones directamente. Se recomienda utilizar la clasificación.

# include & ltstdio.h & gt

typedef struct _student {

int ID, Clase

} estudiante;

//El primer método debe llamarse dos veces.

void Sort_1 (estudiante * s, int recuento, int campo) {

int i, j, k

estudiante tmp, *c =; (estudiante *)((int *)s+campo);

for(I = 0;i<count-1;i++) {

for(k = I, j = I +1;j<count;j++)

if (*(int *)(c+k)>*(int *)(c+j))k =

Si (k!=i)

tmp = s[k], s[k] = s[I], s[I] = tmp;

}

}

//El segundo método es ordenar directamente dos veces.

void sort (estudiante *s, int recuento) {

int i, j, k

Estudiante tmp

for( I = 0;i<count-1;i++) {

for(k=I, j=I+1;j<count;j++)

if (s [k]. ID & gts [j]. ID) k = j;

Si (k!=i)

tmp = s[k], s[k]= s[I], s [I]=tmp;

}

for(I = 0;i<count-1;i++) {

for (k = I, j = I +1; j & lt cuenta; j++)

if (s[k]. Clase & gts[j]. clase) k = j;

If (k!=i )

tmp = s[k], s[k] = s[I], s[I] = tmp;

}

}

int main() {

int I;

Estudiante a【5】= {

{1001,1},{1002, 1},{1003,2},

{2001,1},{2002,2},

};

//Ordenar(a, 5);

sort_1(a,5,0);

sort_1(a,5,1);

p>

for(I = 0; i<5;i++)

printf("Clase:% d\tID:% d\n",a[I].Clase,a[I 】.ID

Sistema); ("pausa");

Devuelve 0;

}