Add all 23 GoF design pattern implementations (2026-06-13)
This commit is contained in:
30
03-behavioral/strategy/MergeSort.java
Normal file
30
03-behavioral/strategy/MergeSort.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package strategy;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class MergeSort implements SortStrategy {
|
||||
@Override
|
||||
public void sort(int[] data) {
|
||||
System.out.println(" [MergeSort] O(n log n) — stable, good for large datasets");
|
||||
mergeSort(data, 0, data.length - 1);
|
||||
}
|
||||
|
||||
private void mergeSort(int[] a, int l, int r) {
|
||||
if (l >= r) return;
|
||||
int m = (l + r) / 2;
|
||||
mergeSort(a, l, m); mergeSort(a, m + 1, r);
|
||||
merge(a, l, m, r);
|
||||
}
|
||||
|
||||
private void merge(int[] a, int l, int m, int r) {
|
||||
int[] left = Arrays.copyOfRange(a, l, m + 1);
|
||||
int[] right = Arrays.copyOfRange(a, m + 1, r + 1);
|
||||
int i = 0, j = 0, k = l;
|
||||
while (i < left.length && j < right.length)
|
||||
a[k++] = left[i] <= right[j] ? left[i++] : right[j++];
|
||||
while (i < left.length) a[k++] = left[i++];
|
||||
while (j < right.length) a[k++] = right[j++];
|
||||
}
|
||||
|
||||
@Override public String getName() { return "MergeSort"; }
|
||||
}
|
||||
Reference in New Issue
Block a user