Voilà, je me demande vraiment pourquoi avec le code source ci dessous j'optiens des résultats aussi incohérents :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const int N= 50000;
int i,j;
void tri_bulle(int *tab/*,const int A*/){
	int aux,a,b;
	a=clock();
	b=0;
	for (i=N-1;i>0;i--){
		for (j=1;j<=i;j++){
			if (tab[j-1]>tab[j]){
				aux=tab[j-1];tab[j-1]=tab[j];tab[j]=aux;
				//b=1;
			}
		}
		//if (b==0) i=0;
	}
	b=clock();
	a=b - a;
	printf("par bulle : %d\n",a);
	fflush(stdout);
}
 
void inversion(int tab[N]){
	for (i=0;i<N;i++){
		j=tab[N-i];tab[N-i]=tab[i];tab[i]=j;
	}
 
int main(){
	int tab[N];
	srand(time(NULL));
	rand();
	saisie(tab);
	tri_bulle(tab); inversion(tab); tri_bulle(tab); tri_bulle(tab);
	return 0;
}
j'obtiens les temps suivant :
par bulle : 18750
par bulle : 7625
par bulle : 7703


le truc c'est pourquoi le programme met moins de temps à inverser un tableau qu'à seulement le parcourir ?