Salve, sono alle prese con questo esame e ho qualche difficoltà nel calcolo dei costi computazionali degli algoritmi.


Si considerino i seguenti metodi:

codice:
public static int metodo3(int n) {
    return metodo2(metodo1(n));
}

public static int metodo2(int[] a) {
    for (int i=0; i<=a.length / 2; i++) {
        for (int j=i; j<a.length; j++) {
            if (a[j] < a[i]) {
                int aux = a[j];
                a[j] = a[i];
                a[i] = aux;
            }
        }
    }
    return a[a.length/2];
}

public static int[] metodo1(int n) {
    LinkedList<Integer> in = new LinkedList<Integer>();
    while (n>0) {
        in.add(n % 10); //resto della divisione intera
        n = n / 10;
    }
    
    Iterator<Integer> iterator = in.iterator();
    int i = 0;
    int[] val = new int[in.size()];
    while (iterator.hasNext()) {
        val[in.size() - i - 1] = iterator.next();
        i++;
    }
    return val;
}
Si richiede quanto segue:
1. Determinare il costo computazionale di metodo1 in funzione del valore n e in funzione della dimensione dell'input.
2. Determinare il costo computazionale di metodo2 in funzione del valore n e in funzione della dimensione dell'input.
3. Determinare il costo computazionale di metodo3 in funzione del valore n e in funzione della dimensione dell'input.

Qualcuno saprebbe aiutarmi? Grazie mille