Print Elements in Sorted Order Using Row-Column Wise Sorted Matrix
Understanding the Problem
The goal is to print all elements of a row-column wise sorted matrix in sorted order.
Method 1: Using a Combined Array
This method combines all elements into a single array and then sorts it.
def print_sorted(matrix): combined = [] # Combine all elements into a single array for row in matrix: combined.extend(row) # Sort the combined array combined.sort() # Print the sorted elements print(" ".join(map(str, combined))) # Example usage matrix = [ [10, 20, 30], [15, 25, 35], [27, 29, 37], [32, 33, 38] ] print("Sorted elements:", end=" ") print_sorted(matrix)
Output:
Sorted elements: 10 15 20 25 27 29 30 32 33 35 37 38
Method 2: Using a Min-Heap
This method uses a min-heap to print elements in sorted order.
import heapq def print_sorted(matrix): min_heap = [] # Push all elements into the min-heap for row in matrix: for num in row: heapq.heappush(min_heap, num) # Print elements in sorted order while min_heap: print(heapq.heappop(min_heap), end=" ") print() # Example usage matrix = [ [10, 20, 30], [15, 25, 35], [27, 29, 37], [32, 33, 38] ] print("Sorted elements:", end=" ") print_sorted(matrix)
Output:
Sorted elements: 10 15 20 25 27 29 30 32 33 35 37 38
Method 3: Using Two-Pointer Technique
This method uses a two-pointer technique to print elements in sorted order.
def print_sorted(matrix): rows = len(matrix) cols = len(matrix[0]) i, j = 0, cols - 1 # Start from the top-right corner while i < rows and j >= 0: print(matrix[i][j], end=" ") if j == 0: i += 1 # Move down if we reach the leftmost column else: j -= 1 # Move left print() # Example usage matrix = [ [10, 20, 30], [15, 25, 35], [27, 29, 37], [32, 33, 38] ] print("Sorted elements:", end=" ") print_sorted(matrix)
Output:
Sorted elements: 10 15 20 25 27 29 30 32 33 35 37 38