Ricerca binaria

(PROBLEMA) La ricerca binaria si applica agli array ordinati. Come controllo si può utilizzare il metodo predefinito java.util.Arrays.binarySearch(). public static int binaria1(double v[], double k) {    int risp=-1,        inf=0,        sup=v.length-1,        medio;    while(inf

Ricerca sequenziale

Posizione di un valore k all’interno di un array v. public static int posizione1(double[] v, double k) { int risp=-1; for(int i=0; i < v.length; i++) if(v[i] == k) risp=i; return risp; } Posizione di un elemento (la prima...) public static int posizione2(double[] v, double k) { for(int i=0; i < v.length; i++) if(v[i] == ... Leggi tutto

Autoverifica > Logici #1

Calcola i valori assunti dalle variabili nelle espressioni seguenti boolean a = true,         b = false, c = !a,         d = (a && b),         e = (a || b),         f = (a ^ b); int a = 10,   … Leggi tutto

Fusione di 2 array

A partire da due sequenze ordinate, v1 e v2, si vuole realizzare una terza sequenza ordinata v3. public static double[] merge(double v1[], double v2[]) { int i1=0, n1=v1.length, i2=0, n2=v2.length, i3=0, n3=n1+n2; double v3[] = new double[n3]; while(i1 < n1 && i2 < n2) { if(v1[i1]

Autoverifica > Bit #1

Calcola i valori assunti dalle variabili nelle espressioni seguenti int a = 1,     b = 2,     c = ~a,     d = a & b,     e = a | b,   f = a ^ b,     g = a > a,     i = b … Leggi tutto

Autoverifica > Reali #1

Calcola i valori assunti dalle variabili nelle espressioni seguenti double a = 10.0, b = a*Math.PI; int a = -10, b = Math.abs(a); double a = 10.0, b = Math.pow(a, 3); double a = Math.pow(11, 2.0)-Math.sqrt(121); int a = 10, b = 15, c = Math.min(a, b); double a = 10.45; long   b = … Leggi tutto

Autoverifica > Interi #1

Calcola i valori assunti dalle variabili nelle espressioni seguenti int a = 10, b = a++; int a = 10, b = ++a; int a = 10, b = 15, c = a*b++; int a = 10, b = 15, c = ++a*b; int a = 10, b = a/2; int a = 10, b … Leggi tutto

Ordinamenti ingenui

Due elementi Scambiare i valori contenuti nell’array v alle posizioni a e b void SCAMBIA(double v[], int a, int b) {    double temp=v[a];    v[a]=v[b];    v[b]=temp; } Ordinare un array di due elementi if(v[0] > v[1])   SCAMBIA(v, 0, 1); oppure… if(v[0] > v[1]) {    double temp=v[0];    v[0]=v[1];    v[1]=temp; } … Leggi tutto

Ordinamenti evoluti

Gli ordinamenti evoluti utilizzano degli algoritmi con complessità minima. Merge sort Utilizza la funzione merge() che realizza la fusione di 2 sotto array già ordinati void mergeSort(double[] v, int inf, int sup) { if(inf < sup) { int medio=(inf+sup)/2; mergeSort(v, inf, medio ); mergeSort(v , medio+1, sup); merge (v, inf, medio , sup); } } ... Leggi tutto

Input controllato > Secondi #2

Dato come input il numero di secondi, convertire il tempo in ore, minuti e secondi con input controllato ripetizione. import javax.swing.JOptionPane; public class Secondi2 { public static void main(String args[]) { String stringa; long sec; do { do { stringa=JOptionPane.showInputDialog(“Secondi? (0 per uscire)”); sec =Long.parseLong(stringa); } while(sec < 0); long ore, min, sec2; ore =sec/3600; ... Leggi tutto