Skip to content

Commit 99a4aeb

Browse files
committed
Lesson 2 and minor renaming of some classes from lesson 1
1 parent 6ed31cc commit 99a4aeb

16 files changed

Lines changed: 485 additions & 49 deletions

File tree

src/main/java/com/packt/datastructuresandalg/lesson1/activity/improveintersection/solution/FastIntersection.java

Lines changed: 0 additions & 49 deletions
This file was deleted.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.packt.datastructuresandalg.lesson1.activity.improveintersection.solution;
2+
3+
import com.packt.datastructuresandalg.lesson1.binarysearch.BinarySearch;
4+
5+
import java.util.Arrays;
6+
import java.util.LinkedList;
7+
import java.util.List;
8+
9+
public class FastInterstectionSol1 {
10+
11+
private BinarySearch search = new BinarySearch();
12+
13+
public List<Integer> intersectionFast(int[] a, int[] b) {
14+
List<Integer> result = new LinkedList<>();
15+
mergeSort(b);
16+
for (int x : a) {
17+
if (search.binarySearch(x, b)) result.add(x);
18+
}
19+
return result;
20+
}
21+
22+
private void mergeSort(int[] input) {
23+
Arrays.sort(input);
24+
}
25+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.packt.datastructuresandalg.lesson1.activity.improveintersection.solution;
2+
3+
import java.util.Arrays;
4+
import java.util.LinkedList;
5+
import java.util.List;
6+
7+
public class FastInterstectionSol2 {
8+
9+
public List<Integer> intersectionFast(int[] a, int[] b) {
10+
List<Integer> result = new LinkedList<>();
11+
mergeSort(a);
12+
mergeSort(b);
13+
int ptrA = 0, ptrB = 0;
14+
while (ptrA < a.length && ptrB < b.length) {
15+
if (a[ptrA] == b[ptrB]) {
16+
result.add(a[ptrA]);
17+
ptrA++;
18+
ptrB++;
19+
} else if (a[ptrA] > b[ptrB]) ptrB++;
20+
else ptrA++;
21+
}
22+
return result;
23+
}
24+
25+
public void mergeSort(int[] input) {
26+
Arrays.sort(input);
27+
}
28+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.packt.datastructuresandalg.lesson2.activity.mergesort;
2+
3+
public class MergeSort {
4+
5+
private void merge(int[] array, int start, int middle, int end) {
6+
7+
}
8+
9+
private void mergeSort(int[] array, int start, int end) {
10+
11+
}
12+
13+
public void mergeSort(int[] array) {
14+
15+
}
16+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.packt.datastructuresandalg.lesson2.activity.mergesort.solution;
2+
3+
public class MergeSort {
4+
5+
private void merge(int[] array, int start, int middle, int end) {
6+
int i = start;
7+
int j = middle + 1;
8+
int[] arrayTemp = new int[end - start + 1];
9+
for (int k = 0; k < arrayTemp.length; k++) {
10+
if (i <= middle && (j > end || array[i] <= array[j])) {
11+
arrayTemp[k] = array[i];
12+
i++;
13+
} else {
14+
arrayTemp[k] = array[j];
15+
j++;
16+
}
17+
}
18+
System.arraycopy(arrayTemp, 0, array, start, arrayTemp.length);
19+
}
20+
21+
private void mergeSort(int[] array, int start, int end) {
22+
if (start < end) {
23+
int middle = (end - start) / 2 + start;
24+
mergeSort(array, start, middle);
25+
mergeSort(array, middle + 1, end);
26+
merge(array, start, middle, end);
27+
}
28+
}
29+
30+
public void mergeSort(int[] array) {
31+
mergeSort(array, 0, array.length - 1);
32+
}
33+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.packt.datastructuresandalg.lesson2.activity.selectionsort;
2+
3+
public class SelectionSort {
4+
5+
public void sort(int[] array) {
6+
7+
}
8+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.packt.datastructuresandalg.lesson2.activity.selectionsort.solution;
2+
3+
public class SelectionSort {
4+
public void sort(int[] array) {
5+
for (int i = 0; i < array.length - 1; i++) {
6+
int minPtr = i;
7+
for (int j = i; j < array.length; j++) {
8+
if (array[j] < array[minPtr]) minPtr = j;
9+
}
10+
swap(array, minPtr, i);
11+
}
12+
}
13+
14+
private void swap(int[] numbers, int j, int k) {
15+
int temp = numbers[j];
16+
numbers[j] = numbers[k];
17+
numbers[k] = temp;
18+
}
19+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.packt.datastructuresandalg.lesson2.linkedlist;
2+
3+
import java.util.Optional;
4+
5+
public class DblLinkedListNode<V> {
6+
private V value;
7+
private Optional<DblLinkedListNode<V>> next;
8+
private Optional<DblLinkedListNode<V>> previous;
9+
10+
public DblLinkedListNode(V value,
11+
Optional<DblLinkedListNode<V>> next,
12+
Optional<DblLinkedListNode<V>> previous) {
13+
this.value = value;
14+
this.next = next;
15+
this.previous = previous;
16+
}
17+
18+
public V getValue() {
19+
return value;
20+
}
21+
22+
public DblLinkedListNode setValue(V value) {
23+
this.value = value;
24+
return this;
25+
}
26+
27+
public Optional<DblLinkedListNode<V>> getNext() {
28+
return next;
29+
}
30+
31+
public DblLinkedListNode setNext(Optional<DblLinkedListNode<V>> next) {
32+
this.next = next;
33+
return this;
34+
}
35+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.packt.datastructuresandalg.lesson2.linkedlist;
2+
3+
import java.util.Optional;
4+
5+
public class LinkedList {
6+
7+
public static void main(String[] args) {
8+
LinkedListNode<Integer> x = new LinkedListNode<>(5, Optional.empty());
9+
}
10+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.packt.datastructuresandalg.lesson2.linkedlist;
2+
3+
import java.util.Optional;
4+
5+
public class LinkedListNode<V> {
6+
private V value;
7+
private Optional<LinkedListNode<V>> next;
8+
9+
public LinkedListNode(V value, Optional<LinkedListNode<V>> next) {
10+
this.value = value;
11+
this.next = next;
12+
}
13+
14+
public V getValue() {
15+
return value;
16+
}
17+
18+
public LinkedListNode setValue(V value) {
19+
this.value = value;
20+
return this;
21+
}
22+
23+
public Optional<LinkedListNode<V>> getNext() {
24+
return next;
25+
}
26+
27+
public LinkedListNode setNext(Optional<LinkedListNode<V>> next) {
28+
this.next = next;
29+
return this;
30+
}
31+
}

0 commit comments

Comments
 (0)