Comprensión profunda del lenguaje C de la función qsort

contenido

Ejemplo de introducción:

           Método 1: clasificación de burbujas

           Método 2: use la función qsort


Ejemplo de introducción:

Descripción del problema:

Comenzaron los exámenes parciales y todos querían sacar buenas notas y competir por los cinco primeros. Ingrese las calificaciones de n estudiantes desde el teclado y emita las cinco calificaciones principales para cada grupo. (Rango de datos: 5<=n<=50, la puntuación se basa en el sistema de porcentaje y no habrá números negativos)

Introduzca la descripción:

Dos líneas Ingrese un número entero en la primera línea, indicando n estudiantes (> = 5), e ingrese las calificaciones de n estudiantes en la segunda línea (entero, que va de 0 a 100), separados por espacios.

Descripción de salida:

Una línea, muestra los cinco primeros con las puntuaciones más altas, separados por espacios.

           Método 1: clasificación de burbujas

Pensamiento:

Los elementos adyacentes se comparan de dos en dos y, si es posible, deben intercambiarse

#include<stdio.h>
int main()
{
	//输入
	int n = 0;  //个数
	int arr[40] = { 0 };  //存放成绩
	scanf("%d", &n);
	int i = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}
	//排序 --- 升序 --- 后5个元素就是最好的前5名
	//自己实现排序 - 冒泡排序
	for (i = 0; i < n - 1; i++)//趟数
	{

		//一趟冒泡排序要进行多少对元素的比较
		int j = 0;
		for (j = 0; j < n - 1 - i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}
	for (i = n - 1; i >= n - 5; i--)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

Este método es nuestra propia implementación de clasificación, pero el lenguaje C tiene un conjunto de algoritmos de clasificación existentes

función qsort - proporcionada por el lenguaje C

           Método 2: use la función qsort

La función qsort es una función proporcionada especialmente por el lenguaje C para una clasificación rápida, pero tiene la desventaja de que es más complicada de operar que las funciones ordinarias.

En primer lugar, usamos MSDN para verificar la situación específica de la función qsort.Para introducir la función qsort, primero debemos consultar el archivo de encabezado #include<stdlib.h>

 Analizar principalmente sus componentes importantes:

void qsort(
     void* base,  ---> 目标数组 arr
     size_t num,  ---> 待排序元素的个数 n
     size_t width,---> 元素的字节大小  4
     int(* cmp)(const void* elem1, const void* elem2)  ---> 函数比较 cmp_int
);

Redibujar el diagrama es:

 El valor de retorno de la comparación de funciones es el siguiente:

Estas dos piezas de contenido se corresponden individualmente con el código correspondiente que se completará de la siguiente manera:

// 一:
int cmp_int(const void* e1, const void* e2)
{
	return *(int*)e1 - *(int*)e2;
}
// 二:
qsort(arr, n, 4, cmp_int);

El código total se hace de la siguiente manera:

#include<stdio.h>
#include<stdlib.h>
int cmp_int(const void* e1, const void* e2)
{
	return *(int*)e1 - *(int*)e2;
}
int main()
{
	//输入
	int n = 0;  //个数
	int arr[40] = { 0 };  //存放成绩
	scanf("%d", &n);
	int i = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}


	//qsort--C语言函数
	qsort(arr, n, 4, cmp_int);



	for (i = n - 1; i >= n - 5; i--)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/bit_zyx/article/details/121881602
Recomendado
Clasificación