Exemple de qsort

December 22nd, 2018 by admin

La fonction a été normalisée en C ANSI (1989). La norme C exige que la fonction de comparaison implémente une commande totale sur les éléments du tableau d`entrée. Contrairement aux autres fonctions vérifiées par des limites, qsort_s ne traite pas les tableaux de taille zéro comme une violation de contrainte d`exécution et retourne à la place avec succès sans modifier le tableau (l`autre fonction qui accepte les tableaux de taille zéro est bsearch_s). Cependant, il existe une approche intéressante avec un peu de modification dans la fonction de comparaison de tri rapide. La fonction de bibliothèque C void qsort (void * base, size_t nItems, size_t Size, int (* compar) (const void *, const void *)) trie un tableau. Disons que nous devons trier les élèves en fonction des marques dans l`ordre croissant. La fonction accepte deux paramètres qui sont des pointeurs vers les éléments. Les nombres impairs doivent être triés par ordre décroissant et les nombres pair doivent être triés par ordre croissant. Par exemple, qu`il y ait un tableau d`étudiants où suit est le type d`étudiant.

Il s`agit du nombre d`éléments dans le tableau pointé par la base. Si les deux (l et r) sont même, mettre le plus petit de deux d`abord. Jusqu`à qsort_s, les utilisateurs de qsort utilisaient souvent des variables globales pour passer un contexte supplémentaire à la fonction de comparaison. L`élément de code C suivant montre comment trier une liste d`entiers à l`aide de qsort. La fonction de comparaison prend deux arguments et contient la logique pour décider de leur ordre relatif dans la sortie triée. Si COMP indique deux éléments comme équivalents, leur ordre dans le tableau trié résultant n`est pas spécifié. La bibliothèque standard C fournit qsort () qui peut être utilisé pour trier un tableau. Voici un problème intéressant qui peut être facilement résolu avec l`aide de qsort () et la fonction de comparateur. Il a été réécrit en 1983 à Berkeley. La fonction utilise la logique suivante: 1) si les deux (l et r) sont impairs, mettez le plus grand de deux en premier. Comme son nom l`indique, la fonction utilise l`algorithme QuickSort pour trier le tableau donné. La mode alternée signifie que les éléments des indices pair sont triés séparément et que les éléments des indices impairs sont triés séparément.

Le paramètre size donne la taille en octets de chaque élément dans le tableau. Si l`un d`eux est pair et l`autre est impair, mettre le nombre impair en premier. Malgré le nom, ni les normes C ni POSIX n`exigent que cette fonction soit mise en œuvre à l`aide d`un tri rapide ou d`une garantie de complexité ou de stabilité. Version 3 UNIX de 1973, mais était alors une sous-routine assembleur. Il est nommé d`après l`algorithme de «tri rapide» (variante quicksort due à R. Il s`agit de la taille en octets de chaque élément dans le tableau. La fonction qsort () trie l`élément num du tableau pointé par la base. La fonction de comparaison est une fonction qui compare deux éléments. L`idée est de fournir une flexibilité de sorte que qsort () peut être utilisé pour n`importe quel type (y compris les types définis par l`utilisateur) et peut être utilisé pour obtenir n`importe quel ordre désiré (augmentation, diminution ou tout autre). Les implémentations de la fonction qsort atteignent le polymorphisme, la possibilité de trier différents types de données, en prenant un pointeur de fonction à une fonction de comparaison à trois voies, ainsi qu`un paramètre qui spécifie la taille de ses objets d`entrée individuels.

Scowen), qui a été utilisé à l`origine pour l`implémenter dans la bibliothèque C UNIX, bien que la norme C ne l`oblige pas à implémenter quicksort.

Comments are closed.