fork(3) download
  1. class A {
  2. public static void main(String[] args) {
  3. int n = 5000;
  4.  
  5. int g[][] = new int[n][n];
  6. long st, en;
  7.  
  8. // one
  9. st = System.nanoTime();
  10. for(int i = 0; i < n; i++) {
  11. for(int j = 0; j < n; j++) {
  12. g[i][j] = 10;
  13. }
  14. }
  15. en = System.nanoTime();
  16. System.out.println("\nTwo time " + (en - st)/1000000.d + " msc");
  17.  
  18. // two
  19. st = System.nanoTime();
  20. for(int i = 0; i < n; i++) {
  21. g[i][i] = 20;
  22. for(int j = 0; j < i; j++) {
  23. g[j][i] = g[i][j] = 20;
  24. }
  25. }
  26. en = System.nanoTime();
  27. System.out.println("\nTwo time " + (en - st)/1000000.d + " msc");
  28.  
  29. // 3 Обычный массив такого же размера, как и двухмерный, линейный проход по всем элементам
  30. int arrLen = n*n;
  31. int[] arr = new int[arrLen];
  32. st = System.nanoTime();
  33. for(int i : arr) {
  34. arr[i] = 30;
  35. }
  36. en = System.nanoTime();
  37. System.out.println("\n3 time " + (en - st)/1000000.d + " msc");
  38.  
  39.  
  40. // 4 Тот же массив, но работаем как с двухмерным массом
  41. st = System.nanoTime();
  42. int i, j;
  43. for(i = 0; i < n; i++) {
  44. for(j = 0; j < n; j++) {
  45. arr[i*n+j] = 40;
  46. }
  47. }
  48. en = System.nanoTime();
  49. System.out.println("\n4 time " + (en - st)/1000000.d + " msc");
  50. }
  51. }
Success #stdin #stdout 1.06s 380352KB
stdin
Standard input is empty
stdout
Two time 71.998012 msc

Two time 551.664166 msc

3 time 63.74851 msc

4 time 57.215167 msc