|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
[C] Problema sort
Codice:
#include <stdio.h> void sort(int [], int); void printv(int [], int); int main(int argc) { int v[] = {4, 9, 2, 3, 6, 1}; printv(v, 5); puts(" == "); sort(v, 5); puts(" == "); printv(v, 5); return 0; } void sort(int v[], int size) { int i, tmp; for(i = 0; i < size; i++) { if(v[i] < v[i+1]) { printf("%d => %d\n", v[i], v[i+1]); tmp = v[i+1]; v[i+1] = v[i]; v[i] = tmp; } if(v[i] > v[i-1]) { printf("%d => %d\n", v[i], v[i+1]); tmp = v[i-1]; v[i-1] = v[i]; v[i] = tmp; } } } void printv(int v[], int size) { int i; for(i = 0; i < size; i++) { printf("%d\n", v[i]); } } Codice:
ouroboros@ouroboros-desktop:~/Desktop$ gcc -O2 -s -o Out sort.c ouroboros@ouroboros-desktop:~/Desktop$ ./Out 4 9 2 3 6 == 4 => 9 2 => 3 2 => 6 6 => 2 == 9 4 6 3 2 L'ho scritto senza sapere cosa fare...o provato a vedere cosa avrei fatto su carta e l'ho trasposto... Tnks
__________________
Gnu/Linux User ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Sbagli l'algoritmo di ordinamento
![]() A parte il fatto che, quando i == 0, fare if(v[i] > v[i-1]) non ha molto senso, anzi è un grave errore, mi sembra difficile (è un eufemismo ![]() La cosa che puoi implementare più facilmente, e che ricalca quello che volevi fare, è questo: Codice:
/* Ordinamento dal più grande al più piccolo */ void sort(int v[], int size) { int i, j, tmp; for(i = size; i > 0; i--) { for (j = 0; j < (i - 1); j++) { if(v[j] < v[j+1]) { printf("%d => %d\n", v[j], v[j+1]); tmp = v[j+1]; v[j+1] = v[j]; v[j] = tmp; } } } }
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson Ultima modifica di -fidel- : 14-05-2007 alle 20:15. |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
Quote:
![]() ![]() tnks... era da un po che non programmichiavo...hai ragione
__________________
Gnu/Linux User ![]() |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Ah, quel codice che ho postato è ottimizabile, tra 2 min lo ottimizzo un pochino
![]() EDIT: ok l'ho aggiustato, è sempre un bubble sort comunque.
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson Ultima modifica di -fidel- : 14-05-2007 alle 20:16. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:26.