Un pequeño programa en C

Hay una función qsort en stdlib. La clasificación rápida es muy conveniente. . .

No he usado c durante mucho tiempo y el uso específico no está claro. .

Busqué información en Internet:

Siete métodos de clasificación qsort

lt; La clasificación en este artículo está ordenada de menor a mayor;

1. Ordenar matriz de tipo int

int num[100];

Muestra:

int cmp ( const void *a, const void *b )

{

return *(int *)a - *(int *)b;

}

qsort( num, 100, sizeof(num[0]), cmp);

2. Ordenar matriz de tipo char (igual que int type)

char word[100];

Muestra:

int cmp( const void *a, const void *b)

{

return *(char *)a - * (int *)b;

}

qsort(palabra, 100, tamaño de(palabra[0]), cmp);

3. preste especial atención)

doble en[100];

int cmp( const void *a, const void *b)

{

return *(doble *)a gt; *(doble *)b 1: -1;

}

qsort(en, 100, tamaño de(en [0] ), cmp);

4. Ordenar la estructura en el primer nivel

struct In

{

datos dobles

p>

int other;

}s[100]

//Ordena las estructuras de pequeña a grande según el valor de los datos, con respecto a la clasificación de datos clave en la estructura Puede haber muchos tipos, consulte el ejemplo anterior para escribir

int cmp( const void *a, const void *b)

{

devolver (*(En *)a)-gt; datos gt (*(En *)b)-gt; datos 1: -1; s, 100, sizeof(s[0]),cmp);

Clasificación de estructuras de segundo nivel

struct In

{

int x;

int y;

}s[100];

//Ordena x de pequeño a grande, cuando x es igual , ordene y de grande a pequeño

int cmp( const void *a, const void *b)

{

struct In *c = (In *)a;

struct In *d = (In *)b;

if(c-gt; x != d-gt; x) return c-gt; - d-gt;

else return d-gt; y - c-gt;

}

qsort(s, 100, tamaño de (s[0] ), cmp);

6. Ordenar cadenas

struct In

{

int da

ta;

char str[100];

}s[100];

//Ordena la cadena str en la estructura en orden del diccionario

p>

int cmp ( const void *a, const void *b)

{

return strcmp( (*(In *)a)-gt; str, ( *(In *)b)-gt; str );

}

qsort(s, 100, tamaño de(s[0]),

;

7. Cmp para encontrar casco convexo en geometría computacional

int cmp(const void *a, const void *b) //La función clave de cmp es ordenar todos los puntos excepto 1 punto por ángulo de rotación.

{

punto de estructura *c=(punto *)a;

punto de estructura *d=(punto *)b;

if( calc(*c, *d, p[1]) lt; 0) devuelve 1

else if( !calc(*c, *d, p[1]) amp; amp; ; dis(c-gt;x,c-gt;y,p[1].x,p[1].y) lt; dis(d-gt;x,d-gt;y,p[1]. x, p[1].y)) //Si está en línea recta, pon el más alejado al frente

return 1;

else return -1;

}

PD:

La función qsort está incluida en el archivo de encabezado de lt;stdlib.hgt;, y strcmp está incluida en el archivo de encabezado de lt; cadena.hgt; ri