Maison  >  Article  >  développement back-end  >  Apprenez à utiliser le tri par sélection et le tri à bulles en trois minutes

Apprenez à utiliser le tri par sélection et le tri à bulles en trois minutes

烟雨青岚
烟雨青岚avant
2020-07-03 11:29:422881parcourir

Apprenez à utiliser le tri par sélection et le tri à bulles en trois minutes

Aujourd'hui, je vais partager avec vous quelques algorithmes sur le langage C, le tri par sélection et le tri par bulles.

Pour le tri par sélection, comprenez d'abord l'idée du tri. Étant donné un tableau, cette idée suppose d’abord que le premier élément du tableau est le plus grand ou le plus petit. A ce moment, trois variables seront utilisées pour représenter les indices des éléments.

L'un représente le courant, l'autre représente l'indice le plus grand ou le plus petit trouvé et l'autre est utilisé pour stocker l'indice de la valeur maximale dans chaque boucle. Après avoir maîtrisé l'idée de base du programme, procédez au séquençage. Après avoir trouvé l'indice le plus grand, attribuez-le à l'indice le plus grand, sauf à chaque fois.

Après l'avoir trouvé, déterminez si la valeur actuelle supposée est la valeur maximale de ce cycle. Sinon, échangez les valeurs maximales et actuelles, organisant ainsi le tableau dans un certain ordre, et enfin écrivez une boucle en sortie. le résultat.

Le code n'est pas difficile, je vais donc l'expliquer étape par étape. Je joins simplement le code. Si vous ne comprenez pas, vous pouvez me laisser un message et je vous l'expliquerai. il y a quelque chose qui ne va pas, je peux le corriger.

#include<stdio.h>
void main()//主函数
{
   int a[10];
   int i,j,w;
   printf("请输入10个数字: \n");
    for(i=0;i<10;i++)
   scanf("%d",&a[i]);
    for(i=0;i<10;i++)
{
     for(j=0;j<10;j++)
     if(a[i]<a[j])//进行比较
//比较后进行交换
{
  w=a[i];
         a[i]=a[j];
           a[j]=w;
}
  }
printf("排序后:\n");
        for(i=0;i<10;i++)
            printf("%4d",a[i]);
              printf("\n");
}

Affichage des résultats :

Apprenez à utiliser le tri par sélection et le tri à bulles en trois minutes

Vient ensuite le Tri des bulles, c'est le plus populaire en langage C L'un des algorithmes les plus couramment utilisés, car il est plus facile à comprendre, c'est la première chose que la plupart des gens utilisent lorsqu'ils souhaitent trier. Cet algorithme est relativement facile à comprendre.

Pour le tri des bulles, l'idée principale est de comparer les nombres adjacents par paires. Si ce dernier est plus grand ou plus petit que le précédent, échangez ses positions jusqu'à ce que tous les nombres soient comparés.

Si un tableau de taille n est donné, alors il doit être comparé n-1 fois, et chaque fois qu'il est comparé n-1-i fois, i représente l'indice qui a été comparé dans le dernier boucle. Écrivez deux jugements en boucle. Si un échange est nécessaire, échangez-le. Si l'échange n'est pas nécessaire, comparez les deux nombres suivants jusqu'à ce que tous les nombres soient comparés.

Enfin, utilisez une boucle pour afficher tous les nombres triés. Le code est le suivant :

#include<stdio.h>
#define N 10
void main()
{
   int a[10];
   int i,j,t;
   printf("请输入10个数字: \n");
    for(i=0;i<10;i++)
   scanf("%d",&a[i]);
//使用两层循环
    for(i=0;i<N-1;i++)
{
     for(j=i+1;j<N-(i+1);j++)
     if(a[j]<a[j+1])//比较大小
{
  t=a[j];
         a[j]=a[j+1];
           a[j+1]=t;
}
}
printf("排序后:\n");
        for(i=0;i<10;i++)
            printf("%4d",a[i]);
              printf("\n");
}

Résultat :

Apprenez à utiliser le tri par sélection et le tri à bulles en trois minutes

Conclusion :

Pour la sélection L'analyse du tri est très simple. La taille de l'entrée est déterminée par les éléments du tableau. L'opération de base est la comparaison des valeurs clés A[j]

Par conséquent, le tri par sélection est un algorithme O(n^2) pour toute entrée. Par conséquent, la complexité temporelle de cette expérience est O(100) et la complexité spatiale est O(10). Cependant, les clés ne sont échangées que O(n) fois, ou pour être plus précis, n-1 fois (un échange est effectué pour chaque itération de la i boucle).

Cette fonctionnalité rend le tri par sélection supérieur à de nombreux autres algorithmes de tri.

Le tri des bulles est un processus dans lequel deux nombres adjacents sont comparés, et le plus grand nombre coule vers le bas (ou le plus petit nombre flotte vers le haut). Un total de n-1 comparaisons et échanges sont effectués.

Afin de faciliter la mise en œuvre de l'algorithme de bulle ci-dessus, envisagez d'utiliser uniquement un tableau unidimensionnel pour stocker 10 données entières. Pendant le processus de tri, les données sont toujours dans ce tableau (fonctionnent sur place et n'occupent pas d'espace supplémentaire). Par conséquent, la complexité temporelle de cet algorithme est O(n-1) et la complexité spatiale est O(1).

Merci à tous d'avoir lu, j'espère que vous en bénéficierez beaucoup.

Cet article est reproduit à partir de : https://blog.csdn.net/zjy18886018024/article/details/80718713

Tutoriel recommandé : "Langage C"

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