PDA

View Full Version : [C] Selection sort_ottimizzato- principiante


cicciopantera
21-02-2015, 12:06
Salve, effettuo questo codice di un selection sort ottimizzato (dato direttamente dal prof.) ma vien fuori un erroraccio! Potete aiutarmi?

#include "stdio.h"
#include <stdlib.h>
#define MAX 100

void input_vettore (int V[],int* N)
{
int x, t=0, n=0;
do
{
printf ("Inserire la dimensione dell'array= ");
scanf ("%d", &n);
}
while (n<2||n>MAX);
for (x=0;x<n;x++)
{
printf ("Inserire l'elemento V[%d]= ", x);
scanf ("%d", &t);
}
*N=n;
}

void sel_sort_ott (int V[],int N)
{
int imin, i, j, temp=0;
for (i=0;i<(N-1);i++)
{
imin=i;
for (j=i+1;j<N;j++)
{
if (V[i]>V[j]) imin=j;
}
temp= V[i];
V[i]=V[imin];
V[imin]=temp;
}
printf ("Il vettore ordinato e'\n");
for (i=0;i<N;i++)
{
printf ("V[%d]= %d ",i, V[i]);
}
}

void main()
{
int V[MAX], N;
input_vettore (V,&N);
sel_sort_ott (V,N);
}


Grazie :)

monte.cristo
22-02-2015, 08:50
Ricontrolla la funzione che fa l'inserimento dei valori nel vettore. L'inserimento non viene fatto in modo corretto, quindi il vettore conterrā valori diversi da quelli inseriti da tastiera.
L'algoritmo di selection sort, infatti, a occhio č corretto, ma se lavora su dati che non sono corretti, anche il risultato č ovviamente sbagliato

cicciopantera
22-02-2015, 12:22
Effettivamente si: a quel t dello scanf va sostituito V[x]; ho riscontrato anche un altro errore nell' if del void selection sort va sostiuito con v[j]<V[imin] :D