Ciao a tutti,
sono alle prime armi con il linguaggio c, ieri ho provato a implementare il selection sort; vi posto il codice:
Non mi dà errori di compilazione. Il problema è che quando finisco di inserire gli elementi dell'array mi dà Segmentation Fault. Ho provato a mettere una printf prima della chiamata SelectionSort(A,n) e una all'inizio della funzione SelectionSort: la prima la stampa, ma la seconda no e non riesco a capire dov'è il problema!codice:#include <stdio.h> #include <stdlib.h> int SelectionSort(int *A, int length){ int i, min, min_index, j; for(i=0; i<length; i++){ min = A[i]; i = min_index; for(j=i+1; j<length; j++){ if (A[j]<min){ min = A[j]; min_index = j; } } A[min_index] = A[i]; A[i] = min; } return *A; } int main(){ int i, n, *A; printf("Inserire la lunghezza dell'array\n"); scanf("%d", &n); if (n<=0) return 1; A = malloc(n* sizeof(int)); if (A == NULL) return 1; printf("Inserire gli elementi dell'array\n"); for (i = 0; i<n; i++) scanf("%d", A+i); SelectionSort(A, n); for(i=0; i<n; i++) printf("%d ", A[i]); printf("\n"); return 0; }
Grazie!

Rispondi quotando