Maison >développement back-end >C++ >La différence entre C qsort() et C++ sort()

La différence entre C qsort() et C++ sort()

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBavant
2023-09-20 21:25:021394parcourir

C qsort()与C++ sort()的区别

Ici, nous verrons la différence entre qsort() en C et sort() en C++.

Le langage C fournit la fonction qsort(), qui peut être utilisée pour trier des tableaux. Les paramètres et la syntaxe de la fonction sont indiqués ci-dessous.

void qsort(void *base, size_t num, size_t size, int (*comparator) (const void*, const void*));

Cette fonction accepte l'adresse de base du tableau, le nombre d'éléments dans le tableau, la taille de chaque élément du tableau et une fonction de comparaison.

C++ fournit la fonction sort(), qui se trouve en C++ STL. Ses paramètres et sa syntaxe sont indiqués ci-dessous.

void sort(T first, T last, Compare c);

Il n'y a aucune garantie que l'ordre des éléments répétés soit préservé. Pour atteindre cet objectif, nous pouvons utiliser stable_sort fourni par C++ STL.

Différence entre qsort() et sort()

qsort() en C sort() en C++
Il utilise un algorithme de tri rapide. Il utilise l'introsort. Il s'agit d'un algorithme de tri hybride. Différentes implémentations utilisent différents algorithmes. GNU C++ STL utilise un tri hybride en trois parties. Introsort, Quicksort et Tri par insertion.
La norme C ne mentionne pas ce problème.
La complexité de cet algorithme de tri. Dans ce cas, la complexité de la fonction sort() de C++11 est O(n logn). Certaines versions précédentes de la fonction sort() avaient une complexité dans le pire des cas de O(n2), alors que dans le cas moyen, leur complexité était O(nlogn). Le temps d'exécution de ce type est comparé à sort() le temps d'exécution est inférieur à qsort(). qsort() n'est pas assez flexible pour différents types. sort() le temps d'exécution est inférieur à qsort(). qsort() n'est pas assez flexible pour différents types sort() est flexible. Il peut trier les tableaux C, les vecteurs C++, les deques C++ et certains autres conteneurs. Cette méthode de tri n'est pas de type sécurisé. Elle utilise des pointeurs vides non sécurisés pour accéder aux données. Ceci. La technique de tri est plus sûre. Elle ne nécessite pas l'utilisation de pointeurs vides dangereux pour accéder aux données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer