Skip to content

Commit 944c2d4

Browse files
jbhattacjbhattac
authored andcommitted
updated
added new algorithms, updated existing algorithms
1 parent c3a69ac commit 944c2d4

File tree

6 files changed

+100
-33
lines changed

6 files changed

+100
-33
lines changed

ArrayPerformanceTest.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package ds.algo.solutions;
2+
3+
public class ArrayPerformanceTest {
4+
5+
public static int[][] getArray(int rows, int cols) {
6+
int[][] arr = new int[rows][cols];
7+
8+
for (int i = 0; i < rows; i++) {
9+
for (int j = 0; j < cols; j++) {
10+
arr[i][j] = 1;
11+
}
12+
}
13+
14+
return arr;
15+
}
16+
17+
public static void main(String[] args) {
18+
19+
int rows = 10000;
20+
int cols = 30000;
21+
int[][] arr = getArray(rows, cols);
22+
23+
long start = System.currentTimeMillis();
24+
int sum = 0;
25+
for (int i = 0; i < rows; i++) {
26+
for (int j = 0; j < cols; j++) {
27+
sum += arr[i][j];
28+
}
29+
}
30+
long timeTaken = System.currentTimeMillis() - start;
31+
System.out.println("Sum: " + sum + " Time taken: " + timeTaken + " mills");
32+
33+
34+
start = System.currentTimeMillis();
35+
sum = 0;
36+
for (int i = 0; i < cols; i++) {
37+
for (int j = 0; j < rows; j++) {
38+
sum += arr[j][i];
39+
}
40+
}
41+
timeTaken = System.currentTimeMillis() - start;
42+
System.out.println("Sum: " + sum + " Time taken: " + timeTaken + " mills");
43+
}
44+
}

DetectCycleInDirectedGraph.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package ds.algo.solution;
1+
package ds.algo.solutions;
22

33
import java.util.HashSet;
44
import java.util.Set;

MergeSort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ private void merge(Integer[] integers, int l, int m, int r) {
5252
}
5353

5454
public static void main(String[] args) {
55-
Integer[] arr = new Integer[] {0, 9, 7, 6, 1, 3, 5, 2, 4, 8};
55+
Integer[] arr = new Integer[] {38, 27, 43, 3, 9, 82, 10};
5656
new MergeSort().mergeSort(arr, 0, arr.length - 1);
5757
Stream.of(arr).forEach(System.out::println);
5858
}

MergeArraysSorted.java renamed to MergeTwoSortedArray.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package ds.algo.solution;
1+
package ds.algo.solutions;
22

3-
public class MergeArraysSorted {
3+
public class MergeTwoSortedArray {
44

55
public int[] merge(int[] arr1, int[] arr2) {
66

@@ -33,4 +33,14 @@ public int[] merge(int[] arr1, int[] arr2) {
3333

3434
return resultArr;
3535
}
36+
37+
public static void main(String[] args) {
38+
int[] arr1 = new int[] {2, 6, 8, 41};
39+
int[] arr2 = new int[] {20, 60, 80, 90};
40+
41+
int a[] = new MergeTwoSortedArray().merge(arr1, arr2);
42+
for(int i : a) {
43+
System.out.println(i);
44+
}
45+
}
3646
}

TopologicalSort.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package ds.algo.solution;
1+
package ds.algo.solutions;
22

33
import java.util.HashSet;
44
import java.util.Set;
@@ -33,20 +33,17 @@ public static void main(String[] args) {
3333
nodes.add(g);
3434

3535
Stack<TopoNode> stack = new TopologicalSort().topoSort(nodes);
36-
while(!stack.isEmpty()) {
37-
System.out.println(stack.pop());
38-
}
36+
37+
stack.forEach(item -> System.out.println(item));
3938
}
4039

4140
private Stack<TopoNode> topoSort(Set<TopoNode> nodes) {
4241
Stack<TopoNode> topoStack = new Stack<>();
4342
Set<TopoNode> visited = new HashSet<>();
4443
Set<TopoNode> allNodes = new HashSet<>(nodes);
4544

46-
for (TopoNode topoNode : allNodes) {
47-
sort(topoNode, topoStack, visited);
48-
}
49-
45+
allNodes.forEach(node -> sort(node, topoStack, visited));
46+
5047
return topoStack;
5148
}
5249

@@ -55,9 +52,8 @@ private void sort(TopoNode node, Stack<TopoNode> topoStack, Set<TopoNode> visite
5552
return;
5653
}
5754
visited.add(node);
58-
for (TopoNode childNode : node.getChildren()) {
59-
sort(childNode, topoStack, visited);
60-
}
55+
node.getChildren().forEach(child -> sort(child, topoStack, visited));
56+
6157
topoStack.add(node);
6258
}
6359
}

TreeTraversalDemo.java

Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,38 @@
77
public class TreeTraversalDemo {
88

99
public static void main(String[] args) {
10-
TreeNode one = new TreeNode(1);
11-
TreeNode two = new TreeNode(2);
12-
TreeNode three = new TreeNode(3);
13-
TreeNode four = new TreeNode(4);
14-
TreeNode five = new TreeNode(5);
10+
TreeNode a = new TreeNode("A");
11+
TreeNode b = new TreeNode("B");
12+
TreeNode c = new TreeNode("C");
13+
TreeNode d = new TreeNode("D");
14+
TreeNode e = new TreeNode("E");
15+
TreeNode f = new TreeNode("F");
1516

16-
one.addLeft(two).addRight(three);
17-
two.addLeft(four).addRight(five);
18-
19-
TreeNode root = one;
17+
a.addLeft(b).addRight(f);
18+
b.addLeft(d).addRight(e);
19+
f.addLeft(c);
20+
21+
TreeNode root = a;
2022
TreeTraversalDemo traversal = new TreeTraversalDemo();
21-
System.out.println("level order");
22-
traversal.levelOrder(root);
23+
traversal.printTree(root, 0);
2324

2425
System.out.println("in order");
2526
traversal.inOrder(root);
2627

27-
System.out.println("post order");
28-
traversal.postOrder(root);
29-
3028
System.out.println("pre order");
3129
traversal.preOrder(root);
3230
}
3331

32+
private static int treeHeight(TreeNode node) {
33+
if (node == null) {
34+
return 0;
35+
}
36+
int l = treeHeight(node.left);
37+
int r = treeHeight(node.right);
38+
39+
return Math.max(l, r) + 1;
40+
}
41+
3442
public void levelOrder(TreeNode root) {
3543
Queue<TreeNode> queue = new LinkedList<>();
3644
queue.add(root);
@@ -106,7 +114,6 @@ public void preOrderNonRecursive(TreeNode node) {
106114
stack.add(temp.right);
107115
if (temp.left != null)
108116
stack.add(temp.left);
109-
110117
}
111118
}
112119

@@ -124,17 +131,27 @@ public void postOrderNonRecursive(TreeNode node) {
124131
return;
125132
}
126133
}
134+
135+
public void printTree(TreeNode node, int level) {
136+
if (node == null) {
137+
return;
138+
}
139+
for (int i = 0; i < level; i++) System.out.print("-");
140+
System.out.println(node);
141+
printTree(node.left, level + 1);
142+
printTree(node.right, level + 1);
143+
}
127144
}
128145

129146
class TreeNode {
130147

131-
int value;
148+
String value;
132149

133150
TreeNode left;
134151

135152
TreeNode right;
136153

137-
TreeNode(int val) {
154+
TreeNode(String val) {
138155
this.value = val;
139156
this.left = null;
140157
this.right = null;
@@ -152,6 +169,6 @@ public TreeNode addRight(TreeNode n) {
152169

153170
@Override
154171
public String toString() {
155-
return String.valueOf(this.value);
172+
return this.value;
156173
}
157174
}

0 commit comments

Comments
 (0)