Skip to content

Commit 99a4aeb

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

File tree

16 files changed

+485
-49
lines changed

16 files changed

+485
-49
lines changed

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

-49
This file was deleted.
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+
}
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+
}
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+
}
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+
}
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+
}
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+
}
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+
}
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+
}
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+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.packt.datastructuresandalg.lesson2.sorting;
2+
3+
4+
public class BinarySearchRecursive {
5+
public boolean binarySearch(int x, int[] sortedNumbers) {
6+
return binarySearch(x, sortedNumbers, 0, sortedNumbers.length);
7+
}
8+
9+
public boolean binarySearch(int x, int[] sortedNumbers, int start, int end) {
10+
if (start <= end) {
11+
int mid = (end - start) / 2 + start;
12+
if (sortedNumbers[mid] == x) return true;
13+
if (sortedNumbers[mid] > x) return binarySearch(x, sortedNumbers, start, mid - 1);
14+
return binarySearch(x, sortedNumbers, mid + 1, end);
15+
}
16+
return false;
17+
}
18+
19+
public static void main(String args[]) {
20+
BinarySearchRecursive binarySearch = new BinarySearchRecursive();
21+
System.out.println(binarySearch.binarySearch(7, new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}));
22+
System.out.println(binarySearch.binarySearch(0, new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}));
23+
}
24+
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package com.packt.datastructuresandalg.lesson2.sorting;
2+
3+
import java.util.Arrays;
4+
5+
public class BobbleSort {
6+
7+
public void sort(int[] numbers) {
8+
for (int i = 1; i < numbers.length; i++) {
9+
for (int j = 0; j < numbers.length - 1; j++) {
10+
if (numbers[j] > numbers[j + 1]) {
11+
int temp = numbers[j];
12+
numbers[j] = numbers[j + 1];
13+
numbers[j + 1] = temp;
14+
}
15+
}
16+
}
17+
}
18+
19+
public void sortImprovement1(int[] numbers) {
20+
for (int i = 1; i < numbers.length; i++) {
21+
for (int j = 0; j < numbers.length - i; j++) {
22+
if (numbers[j] > numbers[j + 1]) {
23+
swap(numbers, j, j + 1);
24+
}
25+
}
26+
}
27+
}
28+
29+
public void sortImprovement2(int[] numbers) {
30+
int i = 0;
31+
boolean swapOccured = true;
32+
while (swapOccured) {
33+
swapOccured = false;
34+
i++;
35+
for (int j = 0; j < numbers.length - i; j++) {
36+
if (numbers[j] > numbers[j + 1]) {
37+
swap(numbers, j, j + 1);
38+
swapOccured = true;
39+
}
40+
}
41+
}
42+
}
43+
44+
private void swap(int[] numbers, int j, int k) {
45+
int temp = numbers[j];
46+
numbers[j] = numbers[k];
47+
numbers[k] = temp;
48+
}
49+
50+
public static void main(String[] args) {
51+
BobbleSort bubbleSort = new BobbleSort();
52+
int[] numbers = new int[]{2, 5, 7, 2, 4, 2, 8, 1, 0};
53+
int[] numbers1 = new int[]{2, 5, 7, 2, 4, 2, 8, 1, 0};
54+
int[] numbers2 = new int[]{2, 5, 7, 2, 4, 2, 8, 1, 0};
55+
bubbleSort.sort(numbers);
56+
bubbleSort.sortImprovement1(numbers1);
57+
bubbleSort.sortImprovement2(numbers2);
58+
System.out.println(Arrays.toString(numbers));
59+
System.out.println(Arrays.toString(numbers1));
60+
System.out.println(Arrays.toString(numbers2));
61+
}
62+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.packt.datastructuresandalg.lesson2.sorting;
2+
3+
import java.util.Arrays;
4+
5+
public class QuickSort {
6+
public void sort(int[] numbers) {
7+
sort(numbers, 0, numbers.length - 1);
8+
}
9+
10+
private void sort(int[] numbers, int start, int end) {
11+
if (start < end) {
12+
int p = partition(numbers, start, end);
13+
sort(numbers, start, p - 1);
14+
sort(numbers, p + 1, end);
15+
}
16+
}
17+
18+
private int partition(int[] numbers, int start, int end) {
19+
int pivot = numbers[end];
20+
int x = start - 1;
21+
for (int i = start; i < end; i++) {
22+
if (numbers[i] < pivot) {
23+
x++;
24+
swap(numbers, x, i);
25+
}
26+
}
27+
swap(numbers, x + 1, end);
28+
return x + 1;
29+
}
30+
31+
private void swap(int[] numbers, int j, int k) {
32+
int temp = numbers[j];
33+
numbers[j] = numbers[k];
34+
numbers[k] = temp;
35+
}
36+
37+
38+
public static void main(String args[]) {
39+
QuickSort quickSort = new QuickSort();
40+
int[] numbers = new int[]{2, 5, 7, 2, 4, 2, 8, 1, 0, 9, 3, 6};
41+
quickSort.sort(numbers);
42+
System.out.println(Arrays.toString(numbers));
43+
}
44+
45+
}

0 commit comments

Comments
 (0)