Algoritmo Bubblesort in C

di il
6 risposte

Algoritmo Bubblesort in C

Salve ho provato a usare l'algoritmo bubblusort per studio, e ho creato questo programmino per ordinare l'array con numeri crescenti. Il problema è che il compilatore me lo compila ma non me lo esegue (compilatore di Ubuntu) e mi da errore di segmentazione ma non riesco a trovare l'errore!!
qualcuno mi puo aiutare?

#include <stdio.h>

/*Programma che ordina un array*/

int main()
{
int n;
int i,pass;
int min;
int nome[n];

printf("Inserisci numero valori nell'array: \n");
scanf("%d",&n);

for(i=0;i<n;i++)
{
printf("Inserisci a[%d]=",i);
scanf("%d",&nome);
}
/*stampa l'array inserito non ordinato*/
for(i=0;i<n;i++)
{
printf("%2d",nome);
}
/*algoritmo BubbleSort crescente*/

for(pass=0;pass<=n-1;pass++)
{
for(i=0;i<n-1-pass;i++)
{
if(nome>nome[i+1])
{
min=nome;
nome=nome[i+1];
nome[i+1]=min;
}
}
}

printf("Ordine:\n");
/*Stampa array ordinato*/

for(i=0;i<=n-1;i++)
{
printf("%4d",nome);
}

printf("\n");
return(0);
}

6 Risposte

  • Re: Algoritmo Bubblesort in C

    L'errore è evidente sta qui:
    
    int n;
    int nome[n];
    
    printf("Inserisci numero valori nell'array: \n");
    scanf("%d",&n);
    
    La variabile n contiene un valore casuale, in genere è un numero molto grande, e quando tu in seguito scrivi int nome [n] cerchi di allocare nell'heap un vettore di interi contenente n elementi, quindi dovrebbe essere sizeof(int)*n, troppo grande per la tua memoria...
    Per poter far scegliere all'utente le dimensioni del vettore puoi usare l'allocazione dinamica oppure puoi dichiarare un array contenente ad esempio 50 elementi e poi dire all'utente di scegliere un numero compreso tra 1 e 50 ed utilizzare in seguito quel numero scelto dall'utente come dimensione dell'array.
    Poi non so se il tuo bubblesort funzioni o meno eh, ma questo lo vedrai dopo
  • Re: Algoritmo Bubblesort in C

    Grazie correggo e provo subito
  • Re: Algoritmo Bubblesort in C

    Light ha scritto:


    L'errore è evidente sta qui:
    ... int nome [n] cerchi di allocare nell'heap un vettore di interi contenente n elementi ...
    NON nello heap!!!!
    NELLO STACK!!!

  • Re: Algoritmo Bubblesort in C

    Vero, pensavo all'allocazione dinamica
  • Re: Algoritmo Bubblesort in C

    Dove non capisco?
  • Re: Algoritmo Bubblesort in C

    stefanaimon ha scritto:


    dove non capisco?
    Rileggi quello che ti ha scritto Light a partire da

    "L'errore è evidente sta qui:"
Devi accedere o registrarti per scrivere nel forum
6 risposte