Questo era tutto nuovo ed anche quello sulle matrici. Anche l'esercizio con i dadi e la punta sul Visual Studio. Il resto l'avevo già pronto. Sarà semi nuovo (tento di sfruttare in parte quello sul pascal) quello sulla ricorsione (ma ci sto ancora pensando). E saranno tutti nuovi quelli con Visual Studio (e lì gioco forza il ritmo di pubblicazione rallentera!). Anche perchè ho quelli in paralleto su Delphi (ancora alcune puntate) e quello tutto nuovo su HTML5.
Ho un dubbio: alla prima chiamata ricorsiva della funzione " Quicksort(data,left,j) " j diventa il mio nuovo right e io perdo il right originale del vettore, cioè la posizione 15, non è così? Quindi non riesco più a lavorare successivamente sulla parte destra e così mi viene su devc++. Mi sto un pò scervellando su questa cosa
Salve prof, video fatto bene. Ho compreso bene. Però l'ultima parte non mi è chiara (prima dell'implementazione del codice) dal minuto 27:30 in poi. Grazie
Mi scusi professore, a me continua a dare 7 messaggi di errore e più esattamente:error: invalid conversion from 'int' to 'int*', in pratica su ogni (v, QUANTI), eppure l'ho ricopiato fedelmente e controllato e ricontrollato più e più volte. Gentilmente, mi può dire dov'è l'inghippo? Grazie.
Bisogna spostare a sinistra della posizione mid elementi più piccoli di data[mid] scambiandolo con uno che si trova alla destra. Quando i scavalca la j (i>j) non sono più possibili scambi quindi ci ferma e si chiama ricorsivamente l'algoritmo sulla metà di sinistra e quella di destra.
Prof grazie per i suoi tutorial, sono essenziali per me. Ho una domanda. Vorrei creare un pulsante di download dove mi scarichi il file automaticamente in un percorso ben determinato dal sottoscritto, evitando la classica finestra di "salva con nome" che appare all'utente quando preme il pulsante. Come potrei fare? La ringrazio anticipatamente.
Sì. Solo che per renderla generale hanno pensato di far passare come parametro il criterio stesso per decidere quando un elemento è maggiore di un altro (qualunque sia il tipo degli elementi). Per capire l'esempio (tratto da Internet) bisogna comprendere l'uso dei puntatori (spiegati più avanti nel corso):
Mi sei stato di grande aiuto per il mio prossimo esame all'università ! Nelle audiolezioni della mia prof.non si capisce nulla riguardo il quick sorting. Un saluto da Napoli!
Perchè con una sola 'passata' che scandisce il vettore è impossibile metterlo in ordine. Bisogna farlo più volte avvicinandosi sempre più al'obiettivo, con tecniche diverse adottabili
Complimenti per il video! mi hai aiutato moltissimo, infatti è l'unica videoguida su l'ordinamento dei vettori. Non ho capito nel primo for del selection_sort perchè dovrei mettere i
Arrivato a questo punto del corso, noto la difficoltà logica di un algoritmo come quello del quicksort e mi sorge una domanda: 1)nelle prossime lezioni la complessità algoritmica tende a diventare simile a questa?2) Per poter diventare buoni programmatori occorre riuscire a padroneggiare algoritmi del genere(come il quicksort) o anche più complessi o diciamo che sono rari i casi in cui serve una capacità di scrittura algoritimica di questo tipo? Grazie.
No, il quick sort può essere considerato un 'picco'; per una vasta fetta di applicativi non è necessario arrivare a questo livello. Detto questo: ce ne sono moltissimi anche di complicati; ma lasciamoli ad applicazioni 'spinte'.
Domanda, ma nell'ordinamento sort, è giusto il codice? cioè se non entro nell if il min_id che valore ha?non devo porre il min_id=i prima del secondo ciclo for?
Cercando con google 'c++ sort algorithm' troverà molti sorgenti. Il c++ ha già la funzione pronta all'uso in una sua libreria (vedrà anche questi riferimenti nei risultati)
Il primo procede trovando il minimo nella parte di vettore ancora da ordinare e lo sposta all'inizio della porzione in cui lo ha cercato. Il secondo confronta il primo con il secondo, e nel caso scambia, poi il secondo con terzo e poi terzo con quarto ecc. Dopo il primo giro abbiamo il max (o min dipende da cosa si vuol fare) in ultima posizione. Si ripete escludendo l'ultima posizione e così via sistemando una posizione alla volta.
con un criterio anche tutto strano; è sufficiente che restituisca -1 se a precede b, 0 se a stesso valore di b, 1 se a segue b secondo il criterio di ordinamento
;) Tieni conto però che per me è più facile, nella tranquillità della mia stanzetta, essere chiaro e preciso; in tempo reale a scuola di solito lo fai con una allegra tribu che ti accende un fuocherello sotto la sedia, canta inni, organizza un party in tempo reale; inoltre è una legge: quando arrivi al momento più importante passa SEMPRE un gruppo di ragazze in cortile per il fantomatico test di Cooper. Chissà perchè i miei rudi maschiacci ITIS all'unisono si voltano, chissa perchè :) Grazie.
In pratica si passa al qsort l'indirizzo (nome) della funzione che fa il confronto, che nell'esempio è la funzione 'compare'. const *int significa indirizzo di un intero che non si può modificare. *void è 'indirizzo' di qualsiasi cosa; (int *) cast a indirizzo di un intero; *(int *)a valore indirizzato dal puntatore a dato generico (void *a) forzato ad essere usato come un intero. E' difficile, lo so ... però molto flessibile: sei tu che decidi come mettere in ordine elementi di QUALSIASI tipo:
Prof, guardi che il selection sort NON FUNZIONA, perchè se non c’è niente da scambiare comunque lui fa uno scambio col precedente minimo, ci vuole un if provi con la sequenza (56, 40, 20, 9, 1)
Sì, tranquillo, è abbastanza avanzato. E' formativo ma non essenziale: si può vivere tranquillamente usando le funzioni di sort (qsort) disponibili nelle librerie standard del linguaggio.
Sicuramente non leggerai il mio commento dato che il video è vecchio secoli, ma ti chiedo che utilità ne può avere un novellino a conoscere gli algoritmi di sorting di un array... Lo dico perché ho cominciato anche io come autodidatta e mettendomi in quei panni sarei a dir poco confuso da queste informazioni che reputo inutili e fuorvianti. Considerato il livello a cui è rivolto il corso, sia chiaro.
uffa ... dimenticavo quanto yoututbe fosse schizzinoso con i caratteri strani... Posto l'indirizzo da completare sempre per via dei caratteri 'proibiti': w w w cplusplus c o m reference clibrary cstdlib qsort togli gli spazi di troppo, metti i punti e dopo il com i separatori sono tutti dei forward slash (simbolo del tasto '7')
mi era sfuggita questa lezione...proprio quello che cercavo, grazie mille
Questo era tutto nuovo ed anche quello sulle matrici. Anche l'esercizio con i dadi e la punta sul Visual Studio. Il resto l'avevo già pronto. Sarà semi nuovo (tento di sfruttare in parte quello sul pascal) quello sulla ricorsione (ma ci sto ancora pensando). E saranno tutti nuovi quelli con Visual Studio (e lì gioco forza il ritmo di pubblicazione rallentera!). Anche perchè ho quelli in paralleto su Delphi (ancora alcune puntate) e quello tutto nuovo su HTML5.
Se intendi quello su cui ho trovato l'applet java di simulazione, è questo:
/ww w.cs.oswego.edu/~mohammad/classes/csc241/samples/sort/Sort2-E.html
Una applet java. Penso la si possa trovare cercando con 'quick sort java applet' o 'quick sort animation simulation' o simili.
Grazie. Ho messo l'indirizzo (che come sapete qui rifiuterebbe) nella descrizione iniziale del video.
Ho un dubbio: alla prima chiamata ricorsiva della funzione " Quicksort(data,left,j) " j diventa il mio nuovo right e io perdo il right originale del vettore, cioè la posizione 15, non è così? Quindi non riesco più a lavorare successivamente sulla parte destra e così mi viene su devc++.
Mi sto un pò scervellando su questa cosa
Salve prof, video fatto bene. Ho compreso bene. Però l'ultima parte non mi è chiara (prima dell'implementazione del codice) dal minuto 27:30 in poi. Grazie
nel programmino di esempi sulle velocità mi da su tutte e 3 le velocità "0".
il pc sul quale gira dev è vecchiotto .. non mi ci raccapezzo!!!
Mi scusi professore, a me continua a dare 7 messaggi di errore e più esattamente:error: invalid conversion from 'int' to 'int*', in pratica su ogni (v, QUANTI), eppure l'ho ricopiato fedelmente e controllato e ricontrollato più e più volte. Gentilmente, mi può dire dov'è l'inghippo? Grazie.
Salve prof, purtroppo l'applet java viene bloccato dalla sicurezza java...conosce altri simulatori?
Raffaele Guido cerca sound of sorting su google
ma il while (i
Bisogna spostare a sinistra della posizione mid elementi più piccoli di data[mid] scambiandolo con uno che si trova alla destra. Quando i scavalca la j (i>j) non sono più possibili scambi quindi ci ferma e si chiama ricorsivamente l'algoritmo sulla metà di sinistra e quella di destra.
si trovano sul tuo canale esempi su algoritmi di fusione(merge) ??? grazie in anticipo
Prof grazie per i suoi tutorial, sono essenziali per me. Ho una domanda. Vorrei creare un pulsante di download dove mi scarichi il file automaticamente in un percorso ben determinato dal sottoscritto, evitando la classica finestra di "salva con nome" che appare all'utente quando preme il pulsante. Come potrei fare? La ringrazio anticipatamente.
Sì. Solo che per renderla generale hanno pensato di far passare come parametro il criterio stesso per decidere quando un elemento è maggiore di un altro (qualunque sia il tipo degli elementi). Per capire l'esempio (tratto da Internet) bisogna comprendere l'uso dei puntatori (spiegati più avanti nel corso):
Mi sei stato di grande aiuto per il mio prossimo esame all'università ! Nelle audiolezioni della mia prof.non si capisce nulla riguardo il quick sorting.
Un saluto da Napoli!
Mi scusi volevo chiederle una cosa .. mi potrebbe spiegare perchè ce 'utilizzo di due cicli e del secondo indice j rispettivo?
Perchè con una sola 'passata' che scandisce il vettore è impossibile metterlo in ordine. Bisogna farlo più volte avvicinandosi sempre più al'obiettivo, con tecniche diverse adottabili
che sito è quello che lei utilizza in questa guida?
Complimenti per il video! mi hai aiutato moltissimo, infatti è l'unica videoguida su l'ordinamento dei vettori.
Non ho capito nel primo for del selection_sort perchè dovrei mettere i
Fantastici video..seguo con interesse.
Una domanda: questi video sono già pronti, come i primi, o li fa lei man mano?
e se io volessi ordinarlo in senso decrescente?
Arrivato a questo punto del corso, noto la difficoltà logica di un algoritmo come quello del quicksort e mi sorge una domanda: 1)nelle prossime lezioni la complessità algoritmica tende a diventare simile a questa?2) Per poter diventare buoni programmatori occorre riuscire a padroneggiare algoritmi del genere(come il quicksort) o anche più complessi o diciamo che sono rari i casi in cui serve una capacità di scrittura algoritimica di questo tipo? Grazie.
No, il quick sort può essere considerato un 'picco'; per una vasta fetta di applicativi non è necessario arrivare a questo livello.
Detto questo: ce ne sono moltissimi anche di complicati; ma lasciamoli ad applicazioni 'spinte'.
capito, grazie per la risposta.
Domanda, ma nell'ordinamento sort, è giusto il codice? cioè se non entro nell if il min_id che valore ha?non devo porre il min_id=i prima del secondo ciclo for?
non è meglio mettere lo scambio dentro la condizione if?
hai ragione, non funziona
Che programma ha usato per far vedere a video i passaggi dell'algoritmo?
Dove posso trovare un programma che svolge la traccia dell'algoritmo?Grazie
Cercando con google 'c++ sort algorithm' troverà molti sorgenti. Il c++ ha già la funzione pronta all'uso in una sua libreria (vedrà anche questi riferimenti nei risultati)
con te ho capito piu di quello che spiega la prof!grazieeee
Mi potrebbe dire sinteticamente quindi cosa avviene nel selectsort e nel bubble ...
Il primo procede trovando il minimo nella parte di vettore ancora da ordinare e lo sposta all'inizio della porzione in cui lo ha cercato.
Il secondo confronta il primo con il secondo, e nel caso scambia, poi il secondo con terzo e poi terzo con quarto ecc. Dopo il primo giro abbiamo il max (o min dipende da cosa si vuol fare) in ultima posizione. Si ripete escludendo l'ultima posizione e così via sistemando una posizione alla volta.
con un criterio anche tutto strano; è sufficiente che restituisca -1 se a precede b, 0 se a stesso valore di b, 1 se a segue b secondo il criterio di ordinamento
;)
Tieni conto però che per me è più facile, nella tranquillità della mia stanzetta, essere chiaro e preciso; in tempo reale a scuola di solito lo fai con una allegra tribu che ti accende un fuocherello sotto la sedia, canta inni, organizza un party in tempo reale; inoltre è una legge: quando arrivi al momento più importante passa SEMPRE un gruppo di ragazze in cortile per il fantomatico test di Cooper. Chissà perchè i miei rudi maschiacci ITIS all'unisono si voltano, chissa perchè :) Grazie.
ma mettendo i=0; i
In pratica si passa al qsort l'indirizzo (nome) della funzione che fa il confronto, che nell'esempio è la funzione 'compare'. const *int significa indirizzo di un intero che non si può modificare. *void è 'indirizzo' di qualsiasi cosa; (int *) cast a indirizzo di un intero; *(int *)a valore indirizzato dal puntatore a dato generico (void *a) forzato ad essere usato come un intero. E' difficile, lo so ... però molto flessibile: sei tu che decidi come mettere in ordine elementi di QUALSIASI tipo:
esatto
Prof, guardi che il selection sort NON FUNZIONA, perchè se non c’è niente da scambiare comunque lui fa uno scambio col precedente minimo, ci vuole un if provi con la sequenza (56, 40, 20, 9, 1)
v[10] significa 10 elementi da v[0] a v[9]; v[n] da v[0] a v[n-1]
indicare
Come al solito ho appositamente 'storpiato' la parte iniziale dell'indirizzo per farlo 'digerire' a youtube :)
Sì, tranquillo, è abbastanza avanzato. E' formativo ma non essenziale: si può vivere tranquillamente usando le funzioni di sort (qsort) disponibili nelle librerie standard del linguaggio.
mi chiamo lorenzo e sono un ragazzo di 13 anni,ma cè una funzione tipo .sort().
senza utilizzare la sintassi del video,che è un po complicata.
Bel video, anche se è un po complicato, almeno per me che sono al primo anno di liceo.
Ottimo, mi fa piacere
Sicuramente non leggerai il mio commento dato che il video è vecchio secoli, ma ti chiedo che utilità ne può avere un novellino a conoscere gli algoritmi di sorting di un array... Lo dico perché ho cominciato anche io come autodidatta e mettendomi in quei panni sarei a dir poco confuso da queste informazioni che reputo inutili e fuorvianti. Considerato il livello a cui è rivolto il corso, sia chiaro.
uffa ... dimenticavo quanto yoututbe fosse schizzinoso con i caratteri strani... Posto l'indirizzo da completare sempre per via dei caratteri 'proibiti':
w w w cplusplus c o m reference clibrary cstdlib qsort
togli gli spazi di troppo, metti i punti e dopo il com i separatori sono tutti dei forward slash (simbolo del tasto '7')
Questo non è il bubble-sort....
il 31 più a destra nel quick sort era da scambiare credo... mi sono scervellato ahhahahahhaah