Bonjour!
Je suis en train de débuter en C et j'ai un petit problème concernant les tris!
j'aimerais réussir un tri rapide de type quicksort. j'ai codé selon l'algorithme du cours en le modifiant un peu pour ma configuration. La compilation se passe sans problèmes mais lorsque j'exécute le programme, il y a "segmentation fault". Je sais pas si j'ai fais une erreur de syntaxe ou si je me suis trompé dans mes variables. ça fait plusieurs heures que je suis dessus, je suis à bout !

voila mon code sur un fichier "a" :
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
35
36
37
38
39
40
41
42
43
44
45
/*--------------------- QUICKSORT --------------------------*/
 
int trouvePivot( TabElem* tab, int i, int j )
{
	int k = i+1;
	while ( k <= j ){
		if ( tab->elems[k] > tab->elems[i] ){
			return k;
		}
		if ( tab->elems[k] < tab->elems[i] ){
			return i;
		}
		k++;
	}
	return -1;
}
 
int partition( TabElem* tab, int i, int j, int pivot )
{
	int k = i;
	int l = j;
	do {
		echange (&tab->elems[k] , &tab->elems[l]);
		while ( tab->elems[k] < pivot ){
			k++;
		}
		while ( tab->elems[l] >= pivot ){
			l = l-1;
		}
	}while ( k >l );
	return k;
}
 
void quicksort( TabElem* tab, int i, int j )
{
	int idxp;
	int k;
	idxp = trouvePivot ( tab, i ,j );
	if (idxp != -1 ) {
		k = partition ( tab , i , j , tab->elems[idxp] );
		quicksort( tab , i , k-1 );
		quicksort( tab , k , j );
	}
 
}
cette partie du code est appeler sur un autre fichier "b" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
quicksort( tab, 0, nbelems - 1);
J'avais fait un tri a bulle juste avant qui fonctionnais mais VRAIMENT trop long à s'exécuté.

Merci de votre aide!