Il problema sta nel fatto che effettui lo scambio ad ogni iterazione del ciclo for interno, invece devi fare lo scambio soltanto alla fine del ciclo for interno, dopo che in p e stato memorizzato l'indice del minimo.
Ecco il codice corretto:
Il selection sort è uno degli algoritmi di ordinamento piu semplici e noti; il quicksort ha complessita temporale pari a O(n^2) sempre nel caso peggiore, anche se nei casi pratici si rivela l'algoritmo di ordinamento piu veloce.codice:void sel_sort(float *A, int n){ int i, j, p; float min; for (i=0; i<n-1; i++) { min = A[i]; p = i; for (j=i+1; j<n; j++){ if (A[j]<min){ min = A[j]; p = j; } } A[p] = A[i]; A[i] = min; } }
![]()

Rispondi quotando