Shaker sort

Si tratta di un bubble sort nei due sensi. Si tenta di ridurre la lunghezza delle passate partendo dai due lati alternativamente. Procedure SHAKERSORT(Var V: Vettore; N: Integer); Var    Inizio, Fine, Ultimo, i: Integer; Begin    Inizio:=1;    Fine:=N-1;    Ultimo:=N-1;    While(Inizio V[i+1]) then                Begin   … Leggi tutto

Bubble Sort

Algoritmo molto diffuso perché intuitivo ma con prestazioni scadenti. Una passata Una passata con ordinamenti di due elementi su tutte le n-1 coppie, all’interno di un array, provoca lo spostamento in alto della bolla più grande. Sia V=(20, 15, 10, 3) alla fine della passata l’elemento più grande 20 si trova in ultima posizione V=(15, … Leggi tutto

Ordinare due dati

Due soli dati da ordinare, cioè il più piccolo deve precedere il più grande. Scambiare il contenuto di due variabili Procedure SCAMBIA(Var X, Y: Real); Var   Temp: Real; Begin   Temp:=X;   X:=Y;   Y:=Temp; End; Scambiare i valori contenuti nell’array V alle posizioni a e b Procedure SCAMBIA(Var V: Vettore; a, b: Integer); … Leggi tutto

Fusione di sequenze

A partire da due sequenze ordinate, v1 e v2, si vuole realizzare una terza sequenza ordinata v3. Esempi v1=(1, 2, 4, 5) v2=() v3=(1, 2, 4, 5) v1=(1, 2, 4, 5) v2=(20, 30, 40, 60) v3=(1, 2, 4, 5, 20, 30, 40, 60) v1=(1, 2, 4, 5, 7, 10) v2=(2, 3, 4, 6) v3=(1, 2, … Leggi tutto

Ricerca binaria

La ricerca binaria si applica agli array ordinati. Essa controlla se l’elemento richiesto si trova nella posizione centrale dell’array altrimenti concentra la ricerca nella parte BASSA se ha trovato un elemento MAGGIORE ALTA se ha trovato un elemento MINORE e continua finché non trova l’elemento, oppure rimane da esaminare un sottoarray vuoto. Esempio Sia V … Leggi tutto

Ricerca sequenziale

Individuare la posizione di un certo elemento all’interno di una sequenza data. Posizione di un valore k all’interno di un array v Function Posizione(V: Vettore; N: Integer; K: Real): Integer; Var   i, Risp: Integer; Begin   Risp:=0;   For i:=1 to N do       If(V[i] = K) Then         … Leggi tutto

Problemino di Carla

Quando è necessario scegliere chi interrogare oppure chi spostare in classe potrebbe essere utili avere un  generatore automatico di sequenze casuali di vittime predestinate del sistema scolastico nazionale… Algoritmo Quanti allievi in classe? Acquisisci tutti nomi Mescola i nomi in modo imparziale Comunica la sequenza di nomi Esempio Elenco prima = { ‘Antoniol’, ‘Canzio’, ‘Cappellaro’, … Leggi tutto

Lanciare i dadi – 2

Lanciare 2 dadi più volte e conteggiare le uscite Ciascuna faccia del singolo dado ha probabilità 1/6 (16,6… %) La probabilità della somma dipende dalle combinazioni disponibili… Combinazioni # probabilità 2 1+1 1 1/36 2,77.. % 3 1+2 2+1 2 2/36 5,55.. % 4 1+3 2+2 3+1 3 3/36 8,33.. % 5 1+4 2+3 3+2 … Leggi tutto

Lanciare i dadi – 1

Lanciare un dado più volte e conteggiare le uscite Ciascuna faccia del dado ha probabilità 1/6 (16,6… %) Quanti lanci sono necessari per avere dati attendibili? Frequenze assolute e/o relative? Type CONTATORI  = Array[1..6] of LongInt; Var  C1, C2, C3 : CONTATORI; Procedure Vedi(CONTA: CONTATORI; n: Longint); Var    i: Byte;    x: Real; Begin … Leggi tutto

Sistema lineare

Il problema Risolvere un sistema lineare (2 equazioni, 2 variabili) Utilizzando uno dei metodi disponibili (sostituzione, confronto, …) si arriva alla soluzione Sono necessari un certo numero di passaggi e le formule finali sono di difficile memorizzazione. Osserva che la divisione non è possibile se ad-bc=0. Metodo di Cramer L’algoritmo di Cramer è semplice da … Leggi tutto