Skip to content

Commit ec978cd

Browse files
jbhattacjbhattac
authored andcommitted
sorting and few other data structure programs
1 parent f2ad9f9 commit ec978cd

File tree

4 files changed

+207
-0
lines changed

4 files changed

+207
-0
lines changed

MergeNSortedArrays.java

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package ds.algo.solutions;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class MergeNSortedArrays {
7+
8+
public static void main(String[] args) {
9+
int[] arr1 = new int[] {1, 5, 9, 10, 90, 91};
10+
int[] arr2 = new int[] {2, 6, 11, 50, 51};
11+
int[] arr3 = new int[] {3, 7, 18, 19};
12+
int[] arr4 = new int[] {4, 8, 30, 35};
13+
int[] arr5 = new int[] {};
14+
15+
int[] res = new MergeNSortedArrays().mergeNArrays(arr1, arr2, arr3, arr4, arr5);
16+
for (int i : res) {
17+
System.out.println(i);
18+
}
19+
}
20+
21+
public int[] mergeNArrays(int[]...arrays) {
22+
23+
int totalLen = 0;
24+
List<Integer> counters = new ArrayList<>();
25+
26+
for (int[] array : arrays) {
27+
totalLen += array.length;
28+
counters.add(0);
29+
}
30+
31+
int[] resultArr = new int[totalLen];
32+
int index = 0;
33+
34+
while(index < totalLen) {
35+
resultArr[index++] = getMin(arrays, counters);
36+
}
37+
38+
return resultArr;
39+
}
40+
41+
private int getMin(int[][] arrays, List<Integer> counters) {
42+
int min = Integer.MAX_VALUE;
43+
int val, index;
44+
int arrayIndex = -1;
45+
46+
for (int i = 0; i < arrays.length; i++) {
47+
index = counters.get(i);
48+
if (index > arrays[i].length - 1) {
49+
continue;
50+
}
51+
val = arrays[i][index];
52+
if (val < min) {
53+
min = val;
54+
arrayIndex = i;
55+
}
56+
}
57+
counters.set(arrayIndex, counters.get(arrayIndex) + 1);
58+
59+
return min;
60+
}
61+
}

MergeSort.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package ds.algo.solutions;
2+
3+
import java.util.stream.Stream;
4+
5+
public class MergeSort {
6+
7+
public void mergeSort(Integer[] integers, int l, int r) {
8+
if (l < r) {
9+
int m = (l + r) / 2;
10+
mergeSort(integers, l, m);
11+
mergeSort(integers, m + 1, r);
12+
13+
merge(integers, l, m, r);
14+
}
15+
}
16+
17+
private void merge(Integer[] integers, int l, int m, int r) {
18+
int n1 = m - l + 1;
19+
int n2 = r - m;
20+
21+
int[] L = new int[n1];
22+
int[] R = new int[n2];
23+
24+
for (int i = 0; i < n1; i++) {
25+
L[i] = integers[l + i];
26+
}
27+
28+
for (int i = 0; i < n2; i++) {
29+
R[i] = integers[m + 1 + i];
30+
}
31+
32+
int i = 0, j = 0;
33+
int k = l;
34+
while (i < n1 && j < n2) {
35+
if (L[i] <= R[j]) {
36+
integers[k++] = L[i++];
37+
} else {
38+
integers[k++] = R[j++];
39+
}
40+
}
41+
42+
/* Copy remaining elements of L[] if any */
43+
while (i < n1) {
44+
integers[k++] = L[i++];
45+
}
46+
47+
/* Copy remaining elements of R[] if any */
48+
while (j < n2) {
49+
integers[k++] = R[j++];
50+
}
51+
52+
}
53+
54+
public static void main(String[] args) {
55+
Integer[] arr = new Integer[] {0, 9, 7, 6, 1, 3, 5, 2, 4, 8};
56+
new MergeSort().mergeSort(arr, 0, arr.length - 1);
57+
Stream.of(arr).forEach(System.out::println);
58+
}
59+
60+
}

QuickSort.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package ds.algo.solutions;
2+
3+
import java.util.stream.Stream;
4+
5+
public class QuickSort {
6+
7+
public void quickSort(Integer[] integers, int low, int high) {
8+
9+
if (low < high) {
10+
int pi = partition(integers, high, low);
11+
12+
quickSort(integers, low, pi - 1);
13+
quickSort(integers, pi + 1, high);
14+
}
15+
}
16+
17+
private int partition(Integer[] integers, int high, int low) {
18+
int pivot = high;
19+
int i = low - 1;
20+
int temp;
21+
22+
for (int j = low; j < pivot; j++) {
23+
if (integers[j] < integers[pivot]) {
24+
i++;
25+
temp = integers[i];
26+
integers[i] = integers[j];
27+
integers[j] = temp;
28+
}
29+
}
30+
31+
temp = integers[i + 1];
32+
integers[i + 1] = integers[pivot];
33+
integers[pivot] = temp;
34+
35+
return i + 1;
36+
}
37+
38+
public static void main(String[] args) {
39+
Integer[] arr = new Integer[] {0, 9, 7, 6, 1, 3, 5, 2, 4, 8};
40+
new QuickSort().quickSort(arr, 0, arr.length - 1);
41+
Stream.of(arr).forEach(System.out::println);
42+
}
43+
}

RemoveAllSpacesInplace.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package ds.algo.solutions;
2+
3+
public class RemoveAllSpacesInplace {
4+
5+
public static void main(String[] args) {
6+
String str = " h e llo wor ld ";
7+
8+
char[] ch = str.toCharArray();
9+
System.out.println("Before");
10+
System.out.println(ch);
11+
boolean spaceFlag = false;
12+
int pos = 0;
13+
int spaceCounter = 0;
14+
15+
for (int i = 0; i < ch.length; i++) {
16+
if (ch[i] == ' ') {
17+
spaceCounter++;
18+
}
19+
if (ch[i] == ' ' && !spaceFlag) {
20+
pos = i;
21+
spaceFlag = true;
22+
}
23+
else if (ch[i] != ' ' && spaceFlag) {
24+
spaceFlag = false;
25+
for (int j = i; j < ch.length; j++) {
26+
ch[pos++] = ch[j];
27+
}
28+
i = i - spaceCounter;
29+
30+
// remove the trailing character
31+
for (int k = 0; k < spaceCounter; k++) {
32+
ch[ch.length - 1 - k] = ' ';
33+
}
34+
35+
spaceCounter = 0;
36+
}
37+
}
38+
39+
40+
System.out.println("After");
41+
System.out.println(ch);
42+
}
43+
}

0 commit comments

Comments
 (0)