Je suis en train de mettre en œuvre l'algorithme de tri à bulles en C. Voici ce que j'ai jusqu'à présent:Comment mettre en œuvre tri à bulles en C.
#include<stdio.h>
void bubble_sort(int m, int a[100000]);
void main()
{
int a[100000], i, m;
FILE * be;
be=fopen("be.txt","r");
for (i=0; !(feof(be)); ++i)
fscanf(be,"%i", a+i);
m=i-1;
bubble_sort(m ,a);
fclose(be);
}
void bubble_sort(int m, int a[100000])
{
int i, ok, v, n=m;;
for (;!ok;ok=1)
{
ok=0;
for (i=0;i<=m-1;++i)
{
if (*(a+i)>*(a+i+1)) { v=*(a+i); *(a+i)=*(a+i+1); *(a+i+1)=v; ok=0;}
}
m=m-1;
}
for (i=0; i<n; ++i)
printf("%i ", a[i]);
}
Mon pseudo code:
Bubblesort2(A)
m:=length(A) - 1
repeat
OK := true
for i := 0 to m-1 do
if Ai > Ai+1 then
Ai <=>Ai+1
OK := false
m := m - 1
until OK
Cette ne fonctionne pas correctement. Quel est le code pour implémenter le tri à bulles en C?
puisque c'est un devoir: votre première étape devrait être de rendre le code lisible ... je, ok, v, m, n, a ne sont pas compréhensible variablenames. Vos structures de contrôle peuvent aussi être améliorées - pourquoi utilisez-vous des constructions comme pour (; ok, ok = 1)? – tanascius
J'ai vu '* (a + i + 1)' si souvent dans les questions des débutants - les professeurs l'enseignent-ils comme ça ou pourquoi les gens n'utilisent-ils pas un [i + 1] '?? – AndiDog
auriez-vous réellement essayer de trier à bulle un tableau de 100K? –