|
|
|
![]() |
|
Strumenti |
![]() |
#1 | |
Member
Iscritto dal: Feb 2009
Messaggi: 35
|
[C] Prestazioni algoritmi ordinamento
Salve sn alle prime armi con la programmazione. vorrei scrivere un codice che mi confronti due algoritmi di ordinamento a scelta (bubblesort e quicksort) e mi restituisca il tempo di esecuzione per entrambi per istanze di misura crescenti. Cercando su internet sono riuscito a mettere insieme un codice ma non riesco a farlo funzionare. Ve lo posto. Potete aiutarmi? grazie
Quote:
Ultima modifica di turbobenza : 27-02-2015 alle 10:25. |
|
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Feb 2009
Messaggi: 35
|
quando vado a compilare non me lo compila. credo ci sia un problema nel main della funzione principale che è quella che ho inserito alla fine del codice. ma non riesco a risolvere.
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Feb 2009
Messaggi: 35
|
syntax error at end of input...ho controllato le graffe sembra essere a posto..booooo
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: May 2008
Città: Torino - Valenza (AL)
Messaggi: 1215
|
la richiesta specifica che sia il programma a restituire il tempo di esecuzione?
perchè io avrei fatto fatto due eseguibili (uno per ogni algoritmo) che prendono in input l'array da sortare e li avrei lanciati con http://it.wikipedia.org/wiki/Time_%28Unix%29
__________________
Win 10 x64 - NZXT H440 - Antec TP-750C - AsRock Z77 Extreme4 - Intel Core i5-3570k - 16GB DDR3 Corsair XMS3 1333Mhz CL9 - MSI GTX970 Gaming 4G - Samsung 850 Evo 256GB - WD 4TB Green SATA3 - Maxtor 500GB SATA2 - Seagate 500GB SATA2 - WD 500GB SATA2 - Seagate 160GB IDE - ASUS VW224T @ 1680x1050 @ 60Hz - Creative Inspire T6100 |
![]() |
![]() |
![]() |
#5 | |
Member
Iscritto dal: Feb 2009
Messaggi: 35
|
Quote:
|
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: May 2008
Città: Torino - Valenza (AL)
Messaggi: 1215
|
comunque, basta indentare bene il codice per vedere che alla fine della funzione bubble_sort manca la graffa dopo al return
![]() inoltre nel main chiami solo il quick sort, l'altro non lo fai
__________________
Win 10 x64 - NZXT H440 - Antec TP-750C - AsRock Z77 Extreme4 - Intel Core i5-3570k - 16GB DDR3 Corsair XMS3 1333Mhz CL9 - MSI GTX970 Gaming 4G - Samsung 850 Evo 256GB - WD 4TB Green SATA3 - Maxtor 500GB SATA2 - Seagate 500GB SATA2 - WD 500GB SATA2 - Seagate 160GB IDE - ASUS VW224T @ 1680x1050 @ 60Hz - Creative Inspire T6100 Ultima modifica di M@Rk0 : 02-03-2015 alle 09:35. |
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Feb 2009
Messaggi: 35
|
purtroppo sono fresco di programmazione. non è che sappia come fare
![]() ![]() |
![]() |
![]() |
![]() |
#8 | ||||
Senior Member
Iscritto dal: May 2008
Città: Torino - Valenza (AL)
Messaggi: 1215
|
allora intanto bisogna aver voglia di leggere e capire quello che ti dicono gli altri:
Quote:
Quote:
nello specifico l'output dovrebbe essere: Codice:
marco@vmwx:~/Scrivania$ gcc hwu.c -o hwu hwu.c: In function ‘bubble_sort’: hwu.c:166:1: error: expected declaration or statement at end of input } ^ marco@vmwx:~/Scrivania$ Quote:
Quote:
più di così, non te lo possiamo scrivere noi il codice. se davvero sei in difficoltà, parti da problemi più semplici. per esempio, in questo codice passi puntatori alle funzioni. sai il perché? sai cosa sono e come funzionano? il fatto che tu dica "Cercando su internet sono riuscito a mettere insieme un codice" mi fa pensare a "non molto" come risposta ![]()
__________________
Win 10 x64 - NZXT H440 - Antec TP-750C - AsRock Z77 Extreme4 - Intel Core i5-3570k - 16GB DDR3 Corsair XMS3 1333Mhz CL9 - MSI GTX970 Gaming 4G - Samsung 850 Evo 256GB - WD 4TB Green SATA3 - Maxtor 500GB SATA2 - Seagate 500GB SATA2 - WD 500GB SATA2 - Seagate 160GB IDE - ASUS VW224T @ 1680x1050 @ 60Hz - Creative Inspire T6100 Ultima modifica di M@Rk0 : 02-03-2015 alle 11:17. |
||||
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Feb 2009
Messaggi: 35
|
ho provato a modificare il main in questo modo:
Codice:
int main(void) { int n, A[100]; float t0, t1; n = leggi_array(A); t0 = ((float)clock())/CLOCKS_PER_SEC; quick_sort(A, 0, n-1); t1 = ((float)clock())/CLOCKS_PER_SEC; printf("Il tempo impiegato da quick_sork: %f secondi", t1-t0); t0 = ((float)clock())/CLOCKS_PER_SEC; bubble_sort(v, n); t1 = ((float)clock())/CLOCKS_PER_SEC; printf("Il tempo impiegato da bubble_sork: %f secondi", t1-t0); stampa_array(A, n); return 0; } } |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: May 2008
Città: Torino - Valenza (AL)
Messaggi: 1215
|
Quote:
chiusa questa parentesi, andiamo per piccoli passi: sai cosa significa l'errore che ti ha dato? o meglio, cosa pensi che voglia dire? hai idea di come usare la funzione quick_sort (tanto più che hai la bubble_sort come riferimento), e soprattutto di cosa faccia? secondo me, ripeto, dovresti partire proprio dalle basi, non copiaincollare codice in giro sperando che funzioni (o questa è l'impressione che mi sono fatto da questo thread)
__________________
Win 10 x64 - NZXT H440 - Antec TP-750C - AsRock Z77 Extreme4 - Intel Core i5-3570k - 16GB DDR3 Corsair XMS3 1333Mhz CL9 - MSI GTX970 Gaming 4G - Samsung 850 Evo 256GB - WD 4TB Green SATA3 - Maxtor 500GB SATA2 - Seagate 500GB SATA2 - WD 500GB SATA2 - Seagate 160GB IDE - ASUS VW224T @ 1680x1050 @ 60Hz - Creative Inspire T6100 |
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Jun 2003
Messaggi: 15819
|
Quote:
Gli errori che restituisce il compilatore non sono messaggi scritti a caso, se li leggi ti dicono quello che non va "`v' undeclared" indica che non capisce cos'è "v" |
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: May 2008
Città: Torino - Valenza (AL)
Messaggi: 1215
|
edit: fail mio
__________________
Win 10 x64 - NZXT H440 - Antec TP-750C - AsRock Z77 Extreme4 - Intel Core i5-3570k - 16GB DDR3 Corsair XMS3 1333Mhz CL9 - MSI GTX970 Gaming 4G - Samsung 850 Evo 256GB - WD 4TB Green SATA3 - Maxtor 500GB SATA2 - Seagate 500GB SATA2 - WD 500GB SATA2 - Seagate 160GB IDE - ASUS VW224T @ 1680x1050 @ 60Hz - Creative Inspire T6100 |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Jun 2003
Messaggi: 15819
|
nell'esercizio però c'è un errore di fondo, su un vettore inserito a mano, quindi diciamo con una ventina di elementi, ti risulterà esattamente lo stesso tempo di ordinamento, andrebbe fatto almeno su 100.000 elementi per vedere qualche differenza
|
![]() |
![]() |
![]() |
#14 |
Member
Iscritto dal: Feb 2009
Messaggi: 35
|
si esatto simone..è un altro problema che mi sono posto ma non so come risolvere..avevo pensato a generare migliaia di numeri random ma non so come fare
![]() |
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Jun 2003
Messaggi: 15819
|
Quote:
http://www.html.it/pag/15491/il-ciclo-for/ http://www.cplusplus.com/reference/cstdlib/rand/ |
|
![]() |
![]() |
![]() |
#16 | |
Senior Member
Iscritto dal: Jun 2003
Messaggi: 15819
|
Quote:
![]() ![]() in quel periodo ho notato che la cosa più difficie per i poco avvezzi all'informatica era l'indentazione, ho visto cose che voi umani.... ![]() ![]() Ultima modifica di Simonex84 : 03-03-2015 alle 10:39. |
|
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Jun 2003
Messaggi: 15819
|
Quote:
Poi magari una lettura ad un manuale di C non avrebbe guastato, ma se non hai in testa l'algoritmo non si va da nessuna parte |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:10.