eccone un altro.. 'tradotto' fedelmente dal Pascal, ovviamente mi da problemi nell'ordinamento..
codice:#include<stdio.h> #include<stdlib.h> void shell_sort(int *, int); int main() { int *vet, n, i; printf("Quanti elementi vuoi inserire nell'array?: "); scanf("%d", &n); printf("\n"); vet = (int *) malloc (n*sizeof(int)); for(i = 0; i < n; i++) { printf("Inserisci il %d elemento dell'array: ", i+1); scanf("%d", &vet[i]); } printf("\nGli elementi inseriti nell'array sono: "); for(i = 0; i < n; i++) printf("%d ", vet[i]); printf("\n"); shell_sort(vet, n); printf("\nL'array ordinato e' il seguente: "); for(i = 0; i < n; i++) printf("%d ", vet[i]); printf("\n\n"); system("pause"); return 0; } void shell_sort(int *vet, int n) { int inc = n, corr, prec, j, k, x; bool inserito; while (inc > 1 ) { inc = inc % 2; for (j = 0; j < inc; j++) { k = j + inc; while (k <= n) { inserito = false; x = vet[k]; corr = k; prec = corr - inc; while ((prec >= j) && (!inserito)) { if (x < vet[prec]) { vet[corr] = vet[prec]; corr = prec; prec = prec - inc; } else inserito = true; } vet[corr] = k; k = k + inc; } } } }

Rispondi quotando