Discussione: [C] Insertion sort??
View Single Post
Old 26-01-2009, 14:28   #1
fabri_napoli
Junior Member
 
Iscritto dal: Dec 2008
Città: Napoli
Messaggi: 21
[C] Insertion sort??

Buongiorno a tutti!
Per domani devo consegnare un paio di esercizi al prof.. tra questi c'è un algoritmo di insertion sort!
Ho svolto l'esercizio però in alcuni casi mi da' qualche problema... vi riporto quello che ho fatto!
Codice:
#include <stdio.h>
#include <stdlib.h>

/*Prototipo della function*/
int insertion (int *x, int n);

main () {
     /*Dichiaro le variabili*/
     int *a;
     int n;
     int i=0;
     
     printf ("Inserisci il numero di locazioni dell'array\n");
     scanf ("%d", &n);
     
     /*Allocazione dinamica dell'array*/
     a= (int*)malloc(n*sizeof(int));
     
     /*Riempio l'array*/
     for (i=0; i<n; i++) {
                            printf ("Inserisci il valore n.%d\n", i);
                            scanf ("%d", &a[i]); }
    
    /*Stampo a video l'array*/
    for (i=0; i<n; i++) {
                           printf ("%d) %d\n", i, a[i]); }
                           
    /*Chiamo la funzione insertion*/
    insertion (a, n);
    
    /*Stampo a video l'array ordinato*/
    printf ("Dopo la chiamata alla funzione il tuo array e' ordinato in questo modo:\n\n");
    for (i=0; i<n; i++) {
                           printf ("%d) %d\n", i, a[i]); }
                           
    system ("pause");
    /*Libero la memoria allocata per l'array*/
    free (a);
}

/*Funzione insertion*/
int insertion (int *x, int n) {
    int i=0;
    int j=0;
    int r;
    /*Inizio primo ciclo iterativo*/
    for (i=2; i<n; i++) {
                         r=x[i];
                         j=i;
                         /*Inizio del secondo ciclo iterativo*/
                         while (r<x[j-1]) {
                                            x[j]=x[j-1];
                                            j=j-1; }
                         x[j]= r; }
                         }
Potreste per favore controllare se c'è qualcosa che non và? A volte quando chiamo la funzione l'array che mi stampa a video ha come primo valore numeri strani, tipo "3498579"!! Grazie infinite
fabri_napoli è offline   Rispondi citando il messaggio o parte di esso