Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 3438b12

Browse files
author
Ram swaroop
committed
search in sorted 2D array : done
1 parent de151ed commit 3438b12

File tree

1 file changed

+28
-12
lines changed

1 file changed

+28
-12
lines changed

src/me/ramswaroop/arrays/SearchInSorted2DArray.java

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,29 @@
1111
*/
1212
public class SearchInSorted2DArray {
1313

14+
/**
15+
* Searches {@param value} in a square sized 2-D array {@param a} which is sorted
16+
* both row wise and column wise.
17+
* <p/>
18+
* Time complexity: O(n) where n is size of 2-D array.
19+
*
20+
* @param a
21+
* @param i
22+
* @param j
23+
* @param value
24+
* @return
25+
*/
1426
public static int[] search(int[][] a, int i, int j, int value) {
15-
16-
if (i == a.length && j == a[0].length && i == j && a[i][j] != value) {
17-
return new int[]{-1, -1};
27+
for (int x = 0; x < a.length; x++) {
28+
if (a[i][x] == value) {
29+
return new int[]{i, x};
30+
} else if (a[x][j] == value) {
31+
return new int[]{x, j};
32+
}
1833
}
1934

20-
if (a[i][j] == value) {
21-
return new int[]{i, j};
22-
} else if (a[i][j] < value && j < a[0].length - 1 && a[i][j + 1] <= value) {
23-
return search(a, i, j + 1, value);
24-
} else if (a[i][j] < value && i < a.length - 1 && a[i + 1][j] <= value) {
25-
return search(a, i + 1, j, value);
26-
} else if (a[i][j] > value && i > 0) {
27-
return search(a, i - 1, j, value);
35+
if (i < a.length - 1) {
36+
return search(a, i + 1, j + 1, value);
2837
} else {
2938
return new int[]{-1, -1};
3039
}
@@ -42,10 +51,17 @@ private static void print2DMatrix(int[][] a) {
4251
public static void main(String a[]) {
4352
int[][] ar = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
4453
print2DMatrix(ar);
54+
System.out.println(Arrays.toString(search(ar, 0, 0, 1)));
55+
System.out.println(Arrays.toString(search(ar, 0, 0, 2)));
56+
System.out.println(Arrays.toString(search(ar, 0, 0, 3)));
4557
System.out.println(Arrays.toString(search(ar, 0, 0, 4)));
58+
System.out.println(Arrays.toString(search(ar, 0, 0, 5)));
4659
System.out.println(Arrays.toString(search(ar, 0, 0, 6)));
47-
System.out.println(Arrays.toString(search(ar, 0, 0, 1)));
60+
System.out.println(Arrays.toString(search(ar, 0, 0, 7)));
4861
System.out.println(Arrays.toString(search(ar, 0, 0, 8)));
4962
System.out.println(Arrays.toString(search(ar, 0, 0, 9)));
63+
System.out.println(Arrays.toString(search(ar, 0, 0, 10)));
64+
System.out.println(Arrays.toString(search(ar, 0, 0, 11)));
65+
System.out.println(Arrays.toString(search(ar, 0, 0, 12)));
5066
}
5167
}

0 commit comments

Comments
 (0)