Erreur de segmentation c++

f.overflow Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je suis débutant en c++ et pour m'entrainer j'ai codé une fonction de trie de quickshort mais qu'oon je compile et jexecute il me dit erreur de segmentation

#include <iostream>
#include <vector>
using namespace std;

void quickshort(vector<int>&);
int main()
{
int n;
cout << " entrer la taille du taleau " << endl;
cin >> n;

vector<int> v(n);
for ( int i(0); i < v.size(); i++)
{
cout << "v = "; cin >> v[i];
}


cout << " le tableau trié est : " << endl;

quickshort( v);
for ( int i(0); i < v.size(); i++)
cout << v[i] << " ";

cout << endl;
return 0;
}

void quickshort(vector<int> &v)
{
int temp;
if ( v.size() == 2)
{
if( v[0] > v[1])
{
temp = v[0];
v[0] = v[1];
v[1] = temp;
}

}
else
{

vector<int> plus_petit;
vector<int> plus_grand;

int pivot = v[0];
for( int i(1); i < v.size(); i++)
{
if( v[i] <= v[0] ) plus_petit.push_back(v[i]);
else plus_petit.push_back(v[i]);
}

v.clear();
quickshort(plus_petit);
for ( int i(0); i < plus_petit.size(); i++) v.push_back(plus_petit[i]);
v.push_back(pivot);
quickshort(plus_grand);
for( int i(0); i < plus_grand.size(); i++) v.push_back(plus_grand[i]);

}
}



et bonne soiré a vous tous et en meme temps est ce quequ'un pourrait me dire comment debugger en c++ et je serais reconnaisant

1 réponse

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Merci d'utiliser les balises "code" (à droite du bouton "souligné") pour garder l'indentation du code.
Sinon, en lisant ton code, je ne reconnais vraiment pas l'algorithme du quick sort (et non quick short).
Tu n'utilises pas bien le pivot. Ton vecteur "plus_grand" n'est pas initialisé.
if( v[i] <= v[0] ) plus_petit.push_back(v[i]);
else plus_petit.push_back(v[i]);

La condition sert à rien, puisque dans les deux cas tu fais la même opération.

Un petit lien intéressant : https://fr.wikipedia.org/wiki/Tri_rapide où tu vois l'algorithme. Ton code doit y ressembler.
0