Ciao a tutti,
sono alle prime armi con il linguaggio c, ieri ho provato a implementare il selection sort; vi posto il codice:
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;
}
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!
Grazie!