Espaces de noms
Variantes
Affichages
Actions

cpp/algorithm/qsort : Différence entre versions

De cppreference.com
< cpp‎ | algorithm
m (Remplacement du texte — « <code terminal> » par « <syntaxhighlight lang="text"> »)
m (Use {{lc}}. Update links. Various fixes.)
 
(10 révisions intermédiaires par 3 utilisateurs sont masquées)
Ligne 1 : Ligne 1 :
{{title|qsort}}
+
{{
Syntaxe :
+
title|qsort}}
 +
 +
 +
 +
 +
 +
 +
 +
  
<syntaxhighlight lang="cpp">
+
le tableau 'contient éléments de taille. |est pour '..
    #include <cstdlib>
+
    void qsort( void *buf, size_t nb, size_t taille, int (*compare)(const void*, const void *) );
+
</syntaxhighlight>
+
La fonction qsort() trie le tableau ''buf'' (qui contient ''nb'' éléments, chacun de
+
taille ''taille'') en utilisant l'algorithme [[cpp/http:''fr.wikipedia.org/wiki/Tri_rapide | Quicksort]].
+
La fonction ''compare'' est utilisée pour comparer les élément de ''buf'' et doit retourner une
+
valeur négative si le premier argument est inférieur au second, zéro si les deux éléments sont égaux
+
et une valeur positive si le premier est supérieur au second. ''qsort()'' trie le ''buf'' dans l'ordre
+
croissant.
+
  
Par exemple, le bout de code ci-dessous utilise ''qsort()'' pour trier un tableau d'entiers :
+
 +
 +
le tableau
 +
d'
 +
 +
 +
  
<syntaxhighlight lang="cpp">
+
===
  int compare_ints( const void* a, const void* b ) {  // fonction de comparaison
+
()()}
    int* arg1 = (int*) a;
+
    int* arg2 = (int*) b;
+
    if( *arg1 < *arg2 ) return -1;
+
    else if( *arg1 == *arg2 ) return 0;
+
    else return 1;
+
  }
+
  
  int tab[] = { -2, 99, 0, -743, 2, 3, 4 };
+
=
  int taille_tab= 7;
+
{, , }
  
  ...
+
 +
 +
.
 +
.
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
  printf( "Avant le tri : " );
+
=
  for( int i = 0; i < taille_tab; i++ ) {
+
{
    printf( "%d ", tab[i] );
+
  }
+
}
  printf( "\n" );
+
 +
 +
  
  qsort( tab, taille_tab, sizeof(int), compare_ints );
+
qsort
 
+
:
  printf( "Après le tri : " );
+
[]
  for( int i = 0; i < taille_tab; i++ ) {
+
/
    printf( "%d ", tab[i] );
+
:
  }
+
:/
  printf( "\n" );
+
[[cpp/algorithm/]]
</syntaxhighlight>
+
[[cpp/algorithm/
 
+
/algorithm/]]
À l'exécution ce code, voici ce qu'on observer sur la sortie standard :
+
 
+
<syntaxhighlight lang="text">
+
  Avant le tri : -2 99 0 -743 2 3 4
+
  Après le tri : -743 -2 0 2 3 4 99
+
</syntaxhighlight>
+
 
+
Sujets connexes : [[cpp/algorithm/bsearch | bsearch]], [[cpp/algorithm/sort | stl/algorithm/sort]]
+

Version actuelle en date du 2 juillet 2013 à 04:27

 
 
Bibliothèque d'algorithmes
Fonctions
Original:
Functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Non-modification de la séquence des opérations
Original:
Non-modifying sequence operations
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Modification de la séquence des opérations
Original:
Modifying sequence operations
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Des opérations de partitionnement
Original:
Partitioning operations
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Opérations de tri (sur les gammes triés)
Original:
Sorting operations (on sorted ranges)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
is_sorted (C++11)
is_sorted_until (C++11)
sort
Opérations binaires de recherche (sur les gammes triés)
Original:
Binary search operations (on sorted ranges)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Définir les opérations (sur les gammes triés)
Original:
Set operations (on sorted ranges)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Opérations Heap
Original:
Heap operations
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Minimum / maximum de fonctionnement
Original:
Minimum/maximum operations
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Opérations numériques
Original:
Numeric operations
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Bibliothèque C
Original:
C library
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
qsort
 
Déclaré dans l'en-tête <cstdlib>
void qsort( const void *ptr, size_t count, size_t size,
            int (*comp)(const void *, const void *) );
Trie le tableau donné pointé par ptr dans l'ordre croissant. Le tableau contient des éléments count de size taille. Fonction pointée par comp est utilisé pour la comparaison d'objets .
Original:
Sorts the given array pointed to by ptr in ascending order. The array contains count elements of size size. Function pointed to by comp is used for object comparison.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Sommaire

[modifier] Paramètres

ptr -
pointeur vers le tableau à trier
Original:
pointer to the array to sort
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
count -
nombre d'éléments dans le tableau
Original:
number of element in the array
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
size -
taille de chaque élément dans le tableau en octets
Original:
size of each element in the array in bytes
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
comp - comparison function which returns ​a negative integer value if the first argument is less than the second,

a positive integer value if the first argument is greater than the second and zero if the arguments are equal.
The signature of the comparison function should be equivalent to the following:

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

The function must not modify the objects passed to it.

[modifier] Retourne la valeur

(Aucun)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[modifier] Notes

Le type des éléments du tableau doit être un type trivial, sinon le comportement est indéfini .
Original:
The type of the elements of the array must be a trivial type, otherwise the behavior is undefined.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[modifier] Exemple

Le code suivant trie un tableau d'entiers en utilisant qsort() .
Original:
The following code sorts an array of integers using qsort().
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

#include <iostream>
#include <cstdlib>
 
int compare_ints(const void* a, const void* b)   // comparison function
{
    int* arg1 = (int*) a;
    int* arg2 = (int*) b;
    if (*arg1 < *arg2) return -1;
    else if (*arg1 == *arg2) return 0;
    else return 1;
}
 
int main()
{
    int a[] = { -2, 99, 0, -743, 2, 3, 4 };
    int size = 7;
 
    std::qsort(a, size, sizeof(int), compare_ints);
 
    for (int i = 0; i < size; i++) {
        std::cout << a[i] << " ";
    }
    std::cout << '\n';
}

Résultat :

-743 -2 0 2 3 4 99

[modifier] Voir aussi

recherche un tableau pour un élément de type non spécifié
Original:
searches an array for an element of unspecified type
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(fonction) [edit]
trie une plage dans l'ordre ascendant
Original:
sorts a range into ascending order
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(fonction générique) [edit]
(C++11)
vérifie si un type est trivial
Original:
checks if a type is trivial
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(classe générique) [edit]
C documentation for qsort