@@ -110,4 +110,131 @@ public void rowColumnSorted2dArrayBinarySearchTestNotFound() {
110110 assertEquals (expected [0 ], ans [0 ]);
111111 assertEquals (expected [1 ], ans [1 ]);
112112 }
113+
114+ /**
115+ * Tests for a WIDE rectangular matrix (3 rows, 4 columns)
116+ */
117+ private static final Integer [][] WIDE_RECTANGULAR_MATRIX = {
118+ {10 , 20 , 30 , 40 },
119+ {15 , 25 , 35 , 45 },
120+ {18 , 28 , 38 , 48 },
121+ };
122+
123+ @ Test
124+ public void rowColumnSorted2dArrayBinarySearchTestWideMatrixMiddle () {
125+ Integer target = 25 ; // A value in the middle
126+ int [] ans = RowColumnWiseSorted2dArrayBinarySearch .search (WIDE_RECTANGULAR_MATRIX , target );
127+ int [] expected = {1 , 1 };
128+ assertEquals (expected [0 ], ans [0 ]);
129+ assertEquals (expected [1 ], ans [1 ]);
130+ }
131+
132+ @ Test
133+ public void rowColumnSorted2dArrayBinarySearchTestWideMatrixTopRightCorner () {
134+ Integer target = 40 ; // The top-right corner element
135+ int [] ans = RowColumnWiseSorted2dArrayBinarySearch .search (WIDE_RECTANGULAR_MATRIX , target );
136+ int [] expected = {0 , 3 };
137+ assertEquals (expected [0 ], ans [0 ]);
138+ assertEquals (expected [1 ], ans [1 ]);
139+ }
140+
141+ @ Test
142+ public void rowColumnSorted2dArrayBinarySearchTestWideMatrixBottomLeftCorner () {
143+ Integer target = 18 ; // The bottom-left corner element
144+ int [] ans = RowColumnWiseSorted2dArrayBinarySearch .search (WIDE_RECTANGULAR_MATRIX , target );
145+ int [] expected = {2 , 0 };
146+ assertEquals (expected [0 ], ans [0 ]);
147+ assertEquals (expected [1 ], ans [1 ]);
148+ }
149+
150+ @ Test
151+ public void rowColumnSorted2dArrayBinarySearchTestWideMatrixTopLeftCorner () {
152+ Integer target = 10 ; // The top-left corner element
153+ int [] ans = RowColumnWiseSorted2dArrayBinarySearch .search (WIDE_RECTANGULAR_MATRIX , target );
154+ int [] expected = {0 , 0 };
155+ assertEquals (expected [0 ], ans [0 ]);
156+ assertEquals (expected [1 ], ans [1 ]);
157+ }
158+
159+ @ Test
160+ public void rowColumnSorted2dArrayBinarySearchTestWideMatrixBottomRightCorner () {
161+ Integer target = 48 ; // The bottom-right corner element
162+ int [] ans = RowColumnWiseSorted2dArrayBinarySearch .search (WIDE_RECTANGULAR_MATRIX , target );
163+ int [] expected = {2 , 3 };
164+ assertEquals (expected [0 ], ans [0 ]);
165+ assertEquals (expected [1 ], ans [1 ]);
166+ }
167+
168+ @ Test
169+ public void rowColumnSorted2dArrayBinarySearchTestWideMatrixNotFound () {
170+ Integer target = 99 ; // A value that does not exist
171+ int [] ans = RowColumnWiseSorted2dArrayBinarySearch .search (WIDE_RECTANGULAR_MATRIX , target );
172+ int [] expected = {-1 , -1 };
173+ assertEquals (expected [0 ], ans [0 ]);
174+ assertEquals (expected [1 ], ans [1 ]);
175+ }
176+
177+ /**
178+ * Tests for a TALL rectangular matrix (4 rows, 3 columns)
179+ */
180+ private static final Integer [][] TALL_RECTANGULAR_MATRIX = {
181+ {10 , 20 , 30 },
182+ {15 , 25 , 35 },
183+ {18 , 28 , 38 },
184+ {21 , 31 , 41 },
185+ };
186+
187+ @ Test
188+ public void rowColumnSorted2dArrayBinarySearchTestTallMatrixMiddle () {
189+ Integer target = 28 ; // A value in the middle
190+ int [] ans = RowColumnWiseSorted2dArrayBinarySearch .search (TALL_RECTANGULAR_MATRIX , target );
191+ int [] expected = {2 , 1 };
192+ assertEquals (expected [0 ], ans [0 ]);
193+ assertEquals (expected [1 ], ans [1 ]);
194+ }
195+
196+ @ Test
197+ public void rowColumnSorted2dArrayBinarySearchTestTallMatrixTopRightCorner () {
198+ Integer target = 30 ; // The top-right corner element
199+ int [] ans = RowColumnWiseSorted2dArrayBinarySearch .search (TALL_RECTANGULAR_MATRIX , target );
200+ int [] expected = {0 , 2 };
201+ assertEquals (expected [0 ], ans [0 ]);
202+ assertEquals (expected [1 ], ans [1 ]);
203+ }
204+
205+ @ Test
206+ public void rowColumnSorted2dArrayBinarySearchTestTallMatrixBottomLeftCorner () {
207+ Integer target = 21 ; // The bottom-left corner element
208+ int [] ans = RowColumnWiseSorted2dArrayBinarySearch .search (TALL_RECTANGULAR_MATRIX , target );
209+ int [] expected = {3 , 0 };
210+ assertEquals (expected [0 ], ans [0 ]);
211+ assertEquals (expected [1 ], ans [1 ]);
212+ }
213+
214+ @ Test
215+ public void rowColumnSorted2dArrayBinarySearchTestTallMatrixTopLeftCorner () {
216+ Integer target = 10 ; // The top-left corner element
217+ int [] ans = RowColumnWiseSorted2dArrayBinarySearch .search (TALL_RECTANGULAR_MATRIX , target );
218+ int [] expected = {0 , 0 };
219+ assertEquals (expected [0 ], ans [0 ]);
220+ assertEquals (expected [1 ], ans [1 ]);
221+ }
222+
223+ @ Test
224+ public void rowColumnSorted2dArrayBinarySearchTestTallMatrixBottomRightCorner () {
225+ Integer target = 41 ; // The bottom-right corner element
226+ int [] ans = RowColumnWiseSorted2dArrayBinarySearch .search (TALL_RECTANGULAR_MATRIX , target );
227+ int [] expected = {3 , 2 };
228+ assertEquals (expected [0 ], ans [0 ]);
229+ assertEquals (expected [1 ], ans [1 ]);
230+ }
231+
232+ @ Test
233+ public void rowColumnSorted2dArrayBinarySearchTestTallMatrixNotFound () {
234+ Integer target = 5 ; // A value that does not exist
235+ int [] ans = RowColumnWiseSorted2dArrayBinarySearch .search (TALL_RECTANGULAR_MATRIX , target );
236+ int [] expected = {-1 , -1 };
237+ assertEquals (expected [0 ], ans [0 ]);
238+ assertEquals (expected [1 ], ans [1 ]);
239+ }
113240}
0 commit comments