Voici une explication détaillée pour chaque section du code :
#include <stdio.h>
int main() {
int N;
// Saisie de la taille du tableau
printf("Entrez la taille du tableau : ");
scanf("%d", &N);
int tableau[N];
1. Déclaration de la taille du tableau :
• N est utilisé pour stocker la taille du tableau.
• L’utilisateur entre la taille N, puis un tableau tableau[N] est déclaré dynamiquement (fonctionne dans certains compilateurs modernes).
// Saisie des éléments du tableau
for (int i = 0; i < N; i++) {
printf("Entrez l'élément %d : ", i + 1);
scanf("%d", &tableau[i]);
2. Saisie des éléments du tableau :
• Ce bloc utilise une boucle for pour demander à l’utilisateur d’entrer chaque élément du tableau.
• scanf lit chaque valeur et la stocke dans la position i du tableau.
// Affichage du tableau initial
printf("Tableau initial : ");
for (int i = 0; i < N; i++) {
printf("%d ", tableau[i]);
printf("\n");
3. Affichage du tableau initial :
• Cette boucle for parcourt chaque élément du tableau et l’affiche.
• Le tableau est affiché avant d’effectuer les tris, ce qui permet de voir l’ordre des éléments d’origine.
// Tri à bulles
for (int i = 0; i < N - 1; i++) {
for (int j = 0; j < N - i - 1; j++) {
if (tableau[j] > tableau[j + 1]) {
int temp = tableau[j];
tableau[j] = tableau[j + 1];
tableau[j + 1] = temp;
4. Tri à Bulles :
• Le tri à bulles compare chaque paire d’éléments adjacents et les échange s’ils sont dans le mauvais ordre.
• La première boucle for contrôle le nombre de passes (répétitions) nécessaires.
• La deuxième boucle for effectue les comparaisons et échanges sur chaque paire.
• temp est une variable temporaire utilisée pour échanger deux éléments.
• Cette opération est répétée jusqu’à ce que le tableau soit trié.
// Affichage du tableau après tri à bulles
printf("Tableau après tri à bulles : ");
for (int i = 0; i < N; i++) {
printf("%d ", tableau[i]);
}
printf("\n");
5. Affichage du tableau après tri à bulles :
• Affiche le tableau après avoir appliqué le tri à bulles, pour vérifier si le tri a été effectué correctement.
// Tri par sélection
for (int i = 0; i < N - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < N; j++) {
if (tableau[j] < tableau[minIndex]) {
minIndex = j;
int temp = tableau[minIndex];
tableau[minIndex] = tableau[i];
tableau[i] = temp;
}
6. Tri par Sélection :
• Le tri par sélection cherche l’élément minimum dans la partie non triée du tableau et l’échange avec l’élément en cours de traitement.
• minIndex garde la position de l’élément minimum trouvé dans la sous-partie non triée.
• La deuxième boucle for compare chaque élément dans la portion non triée pour trouver le minimum.
• Une fois trouvé, cet élément minimum est échangé avec l’élément à sa position correcte (i).
// Affichage du tableau après tri par sélection
printf("Tableau après tri par sélection : ");
for (int i = 0; i < N; i++) {
printf("%d ", tableau[i]);
printf("\n");
7. Affichage du tableau après tri par sélection :
• Affiche le tableau après avoir appliqué le tri par sélection pour s’assurer qu’il est bien trié.
// Tri par insertion
for (int i = 1; i < N; i++) {
int key = tableau[i];
int j = i - 1;
while (j >= 0 && tableau[j] > key) {
tableau[j + 1] = tableau[j];
j--;
tableau[j + 1] = key;
}
8. Tri par Insertion :
• Le tri par insertion prend chaque élément (appelé key) et le place dans la position correcte parmi les éléments déjà triés.
• j parcourt les éléments déjà triés, déplaçant les éléments plus grands que key d’une position vers la droite.
• Une fois que l’emplacement correct est trouvé, key est inséré à cette position.
• Ce tri est efficace pour les tableaux partiellement triés.
// Affichage du tableau après tri par insertion
printf("Tableau après tri par insertion : ");
for (int i = 0; i < N; i++) {
printf("%d ", tableau[i]);
printf("\n");
9. Affichage du tableau après tri par insertion :
• Affiche le tableau après le tri par insertion pour vérifier le bon ordre des éléments.
// Recherche et comptage d'un élément
int X, compteur = 0;
printf("Entrez l'élément à rechercher : ");
scanf("%d", &X);
for (int i = 0; i < N; i++) {
if (tableau[i] == X) {
compteur++;
}
printf("L'élément %d apparaît %d fois dans le tableau.\n", X, compteur);
return 0;
10. Recherche et Comptage d’un Élément :
• L’utilisateur entre un élément X qu’il souhaite rechercher.
• Une boucle for parcourt le tableau pour comparer chaque élément avec X.
• compteur est incrémenté chaque fois qu’un élément dans le tableau correspond à X.
• À la fin, le programme affiche le nombre d’occurrences de X.
Résumé :
Ce programme effectue les étapes suivantes :
1. Saisie et affichage du tableau initial.
2. Tri du tableau selon trois méthodes : tri à bulles, tri par sélection, et tri par insertion.
3. Recherche d’un élément pour compter ses occurrences.
Chaque partie est intégrée directement dans main sans fonctions supplémentaires, respectant la consigne de ne pas utiliser de fonctions
définies par l’utilisateur.