Unit 8: 2D Arrays

Searching and Sorting 2D Arrays in Java

Introduction to Searching and Sorting 2D Arrays

While 2D arrays in Java provide a structured way to store grid-like data, navigating through this matrix efficiently is a skill every Java programmer should master. Searching and sorting operations are fundamental to data manipulation. This lesson provides insights into various methods to search for elements and sort 2D arrays.


Searching in 2D Arrays

Linear search, or sequential search, is the simplest searching algorithm. You iterate through the array, row by row, until the target element is found.

public boolean linearSearch(int[][] matrix, int target) {
    for(int i = 0; i < matrix.length; i++) {
        for(int j = 0; j < matrix[i].length; j++) {
            if(matrix[i][j] == target) {
                return true;
            }
        }
    }
    return false;
}

Performance Concerns

Linear search is not the most efficient way to search in larger arrays as it can take up to n x m iterations (where n is the number of rows and m is the number of columns). However, it works for unsorted arrays.


Sorting 2D Arrays

Sorting a 2D array can mean different things. You might want to sort the rows (or columns) individually or treat the 2D array as a 1D array and sort all elements.

Sorting Rows Individually

import java.util.Arrays;

public void sort2DArrayRows(int[][] matrix) {
    for(int i = 0; i < matrix.length; i++) {
        Arrays.sort(matrix[i]);
    }
}

Sorting the Entire 2D Array

This involves converting the 2D array into a 1D array, sorting it, and then converting it back.

public void sortEntire2DArray(int[][] matrix) {
    int rows = matrix.length;
    int cols = matrix[0].length;
    int[] tempArray = new int[rows * cols];
    int k = 0;

    // Convert 2D array to 1D
    for(int i = 0; i < rows; i++) {
        for(int j = 0; j < cols; j++) {
            tempArray[k++] = matrix[i][j];
        }
    }

    // Sort the 1D array
    Arrays.sort(tempArray);

    // Convert back to 2D
    k = 0;
    for(int i = 0; i < rows; i++) {
        for(int j = 0; j < cols; j++) {
            matrix[i][j] = tempArray[k++];
        }
    }
}

Summary

Searching and sorting operations are integral to manipulating data in 2D arrays. Mastering these techniques is essential for efficient data retrieval and organization. While linear search offers simplicity, sorting operations can be more involved. Nevertheless, understanding these foundational algorithms is crucial for handling more complex data structures and algorithms in the future.


References


AP CSA Homework Assignment

Assignment: Matrix Magic

Instructions

  1. Create a Java class named MatrixMagic.
  2. Implement a method that checks if a number exists in a given 2D array.
  3. Implement a method that sorts the rows of a 2D array.
  4. Implement a method that sorts the entire 2D array.
  5. In your main method, demonstrate the functionality of each method using a sample 2D array.
  6. Bonus: Implement a method that checks for a "magic square" - where the sum of each row, column, and the two diagonals are the same.

Ensure your code is well-documented, indicating each function's purpose and its inner workings.

Previous
Traversing 2D Arrays