Lecture 4 2d Arrays CSE 1322 4/26/2018
2d arrays Working with 2D arrays is similar to 1D arrays. But realize you need to specify two dimensional sizes and any time you access an element, you need to specify both indices. 4/26/2018
CREATE array nums [size_1][size_2] define a 2D array CREATE array nums [size_1][size_2] 4/26/2018
C# define a 2D array <type>[ , ]<name> = new<type>[<size_1>,<size_2>]; For example: int[ , ] grid = new int [10,20]; 4/26/2018
Java define a 2D array <type>[ , ]<name> = new<type>[<size_1>][<size_2>]; For example: int[ ][ ] grid = new int [10][20]; 4/26/2018
Working with 2D arrays usually involves nested loops like this using a array called grid: FOR each element in a row FOR each element in a column grid[row][col] = col * row; 4/26/2018
Working with 2D arrays usually involves nested loops like this in java: for(int row=0; row < 10; row++) for(int col=0; col < 20; col++) grid[row][col] = col * row; 4/26/2018
Working with 2D arrays usually involves nested loops like this in C#: for(int row=0; row < 10; row++) for(int col=0; col < 20; col++) grid[row,col] = col * row; 4/26/2018
What is generated? Java: C# int[,] grid = new int[10, 20]; for (int r = 0; r< 10;r++) for (int c = 0; c < 20; c++) grid[r, c] = c* r; int[][] grid = new int[10][20]; for (int r = 0; r< 10;r++) for (int c = 0; c < 20; c++) grid[r][c] = c* r; 4/26/2018
multi-dimension arrays CREATE array nums [size_1][size_2][size_3] Use nested loops, one for each dimension to traverse the array FOR each number in the row FOR each number in the column FOR each number in the third dimension do some processing ENDFOR 4/26/2018
C# multi-dimension arrays int[,,] nums= new int [5,6,7]; 3 nested loops using GetLength(0), GetLength(1) and GetLength(2) for(int i=0; i<nums.GetLength(0);i++) { for (int j=0; j< nums.GetLength(1);j++) for(int k=0; k<nums.GetLength(2);k++) // do some processing } 4/26/2018
C# multi-dimension arrays int[,,] nums= new int [5,6,7]; Or use a foreach loop as long as you aren’t changing the contents of the array foreach ( int i in nums) {. . .} public static int findLargest(int[,,]n) { int max = n[0,0,0]; foreach (int j in n) { if( j > max) max = j; } return max; } 4/26/2018
Java multi-dimension arrays int[][][] nums= new int [5][6][7]; 3 nested loops using nums.length, nums[0].length and nums[0][0].length for(int i=0; i<nums.length;i++) { for (int j=0; j< nums[0].length;j++) for(int k=0; k<nums[0][0].length;k++) // do some processing } 4/26/2018
Java multi-dimension arrays int[][][] nums= new int [5][6][7]; Use the enhanced for loop/for each loop on each subarray structure, as long as you aren’t changing the contents of the array public static int findLargest3(int[][][]n) { int max = n[0][0][0]; for ( int [][] e : n ) for ( int [] d : e ) for ( int i : d ) { if( i > max) max = i; } return max; } 4/26/2018