2017-09-28 3 views
-1

Je n'ai pas encore entièrement compris ce que j'écris exactement dans la méthode principale quand j'ai une méthode de double matrice bidimensionnelle. Je veux savoir ce que la sortie du code est, quand A = {{4.00,3.00}, {2.00,1.00}} et B = {{-0.500, 1.500}, {1.000, -2.0000}}. Si nous supposons, que lancer l'exception est une complexité constante O(1), est-ce exact, que la complexité de la méthode suivante dans Big-O est: O(1 + aRows * bColumns + aRows * bColumns * aColumns + 1)? Ou est-ce juste O(aRows * bColumns * aColumns)?Java: méthode matricielle bidimensionnelle - l'appeler dans la méthode principale et sa complexité

public class Exercise { 

public static void main(String[] args){ 

} 

public static double[][] m (double[][] A, double [][] B){ 

    int aRows = A.length; 
    int aColumns = A[0].length; 
    int bRows = B.length; 
    int bColumns = B[0].length; 

    if (aColumns != bRows){ 
     throw new IllegalArgumentException("A: Rows: " + aColumns + " did not match B: Columns " + bRows + "."); 
    } 

    double[][] C = new double[aRows][bColumns]; 
    for (int i = 0; i < 2; i++){ 
     for (int j = 0; j < 2; j++){ 
      C[i][j] = 0.00000; 
     } 
    } 

    for (int i = 0; i < aRows; i++){ 
     for (int j = 0; j < bColumns; j++){ 
      for (int k = 0; k < aColumns; k++){ 
       C[i][j] += A[i][k] * B[k][j]; 
      } 
     } 
    } 
    return C; 
} 
} 

Répondre

0

La syntaxe de tableau 2D littéraux est un peu lourd en Java, mais il est

double[][] a=new double[][]{ new double[]{1.0,2.0},new double[]{0.3,0.4}} 

En ce qui concerne la notation Big O, généralement vous regarderais le plus lent en boucle ou celui qui obtient plus lent le plus rapide, et calculer la quantité d'itérations de la boucle. Il n'y a rien de mal à écrire la notation O comme une somme des comptes d'itération de chaque boucle consécutive, bien que vous souhaitiez prêter attention à la quantité d'instructions exécutées dans chaque boucle. Cependant, vous voulez faire le cas où une erreur est renvoyée dans la notation O, car elle saute les deux boucles.

+0

Merci, j'ai écrit double [] [] a = nouveau double [] [] {nouveau double [] {4.00, 3.00}, nouveau double [] {- ​​0.500,1.500}}; double [] [] b = nouveau double [] [] {nouveau double [] {- ​​0.500,1.500}, nouveau double [] {1.000, -2.00000}}; m (a, b); dans ma méthode principale, mais il ne sera pas imprimer le outptut. Pourquoi donc? – TeachMeJava2017

+0

@ TeachMeJava2017 Vous devez l'affecter à une variable et écrire le code qui imprime le contenu du tableau. Vous voudrez utiliser 'System.out.print()' pour imprimer plusieurs fois sur la même ligne (ou 'System.out.printf()' si vous vous sentez aventureux), et appelez 'System.out.println() 'entre les lignes du tableau .. – Haem

+0

J'ai donc écrit double [] [] x = m (a, b); System.out.println (x); mais il n'imprimera que la référence et non les valeurs réelles .. [[D @ 7852e922 – TeachMeJava2017