|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 42
|
[C++] problema Segmentation fault
Ciao a tutti
Ho un problema con questo programmino che utilizza l 'algoritmo quicksort per ordinare un vettore di interi creati a random, in run-time mi va in crash dovuto a un segmentation fault non capisco perchè..... Codice:
#include <cstdlib>
#include <iostream>
using namespace std;
const int QUANTI=100;
int v[QUANTI];
void stampaVet (int v[], int num_ele)
{
for (int i=0; i<num_ele; i++)
cout<< v[i] << " ";
}
void quickSort( int arr[], int left, int right)
{
int i = left;
int j = right;
int y = 0;
int z = arr[(left + right)/2];
do
{
while(arr[i] < z) i++;
while(z < arr[j]) j--;
if (i<=j)
{
y= arr[i];
arr[i]= arr[j];
arr[j]= y;
i++;
j--;
}
} while (i<=j);
if (left < j)
quickSort(arr,left,j);
if (i < right);
quickSort(arr,i,right);
}
void preparaVettore (int v[] , int num_ele)
{
for (int i=0; i<num_ele; i++)
v[i]= rand();
}
int main(int argc, char *argv[])
{
preparaVettore(v,QUANTI);
stampaVet(v,QUANTI);
quickSort(v,0,QUANTI-1);
stampaVet(v,QUANTI);
system("PAUSE");
return EXIT_SUCCESS;
}
TNX a tutti Ultima modifica di carugo : 26-08-2014 alle 22:10. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2780
|
Prova ad eseguire l'algoritmo con carta e penna (o anche mentalmente) con questo array:
1 2 3 4 5 1 1 C'è chiaramente qualcosa che non va... rivedi l'algoritmo del quicksort, hai dimenticato qualcosa. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Codice:
void quickSort( int arr[], int left, int right)
{
int i = left;
int j = right;
int y = 0;
int z = arr[(left + right)/2];
do
{
while(arr[i] < z) i++;
while(z < arr[j]) j--;
if (i<=j)
{
y= arr[i];
arr[i]= arr[j];
arr[j]= y;
i++;
j--;
}
} while (i<=j);
if (left < j)
quickSort(arr,left,j);
if (i < right);
quickSort(arr,i,right);
}
Codice:
if (i < right); Togli il punto e virgola
__________________
In God we trust; all others bring data Ultima modifica di sottovento : 27-08-2014 alle 12:27. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2780
|
Quello non l'avevo visto, che occhio di falco!
Ma se non ho visto male, corretto quello potrebbero esserci altri problemi. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2008
Messaggi: 1242
|
Tutto bene con i due cicli while piazzati subito all'inizio del blocco do ?
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 42
|
Grazie a tutti raga
Stavo diventando pazzo grazie Sottovento ora tutto ok alla prossima CIauzzzz Ultima modifica di carugo : 27-08-2014 alle 15:40. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Si chiama fortuna
__________________
In God we trust; all others bring data |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:39.




















