Skip to content

Commit 39df0b3

Browse files
committed
Fix/clean up all java sorting algorithms
1 parent 8e45f0f commit 39df0b3

15 files changed

+47
-36
lines changed

src/code/java/sorting_algorithms/bogo_sort.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import java.util.Random;
33

44

5-
public void bogoSort(int[] arr) {
5+
public static void bogoSort(int[] arr) {
66
int[] target = Arrays.copyOf(arr, arr.length);
77
Arrays.sort(target);
88

@@ -11,8 +11,9 @@ public void bogoSort(int[] arr) {
1111
}
1212
}
1313

14-
public void shuffleArray(int[] arr) {
14+
public static void shuffleArray(int[] arr) {
1515
Random rnd = new Random();
16+
1617
for (int i = arr.length - 1; i > 0; i--) {
1718
int index = rnd.nextInt(i + 1);
1819
int temp = arr[index];

src/code/java/sorting_algorithms/bubble_sort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
public void bubbleSort(int[] arr) {
1+
public static void bubbleSort(int[] arr) {
22
int n = arr.length;
33

44
for (int i = 0; i < n; i++) {

src/code/java/sorting_algorithms/bucket_sort.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
import java.util.ArrayList;
2+
import java.util.Arrays;
23
import java.util.Collections;
34
import java.util.List;
45

56

6-
public List<Integer> bucketSort(List<Integer> arr) {
7+
public static int[] bucketSort(int[] arr) {
78
int numBuckets = 10;
8-
int minNum = Collections.min(arr);
9-
int maxNum = Collections.max(arr);
9+
int index;
10+
int[] result = new int[arr.length];
11+
int minNum = Arrays.stream(arr).min().getAsInt();
12+
int maxNum = Arrays.stream(arr).max().getAsInt();
1013
double bucketSize = (double) (maxNum - minNum) / numBuckets;
1114
List<List<Integer>> buckets = new ArrayList<>(numBuckets);
1215

@@ -15,14 +18,18 @@ public List<Integer> bucketSort(List<Integer> arr) {
1518
}
1619

1720
for (int num : arr) {
18-
int index = Math.min((int) ((num - minNum) / bucketSize), numBuckets - 1);
21+
index = Math.min((int) ((num - minNum) / bucketSize), numBuckets - 1);
1922
buckets.get(index).add(num);
2023
}
2124

22-
List<Integer> result = new ArrayList<>();
25+
index = 0;
26+
2327
for (List<Integer> bucket : buckets) {
2428
Collections.sort(bucket);
25-
result.addAll(bucket);
29+
30+
for (int num : bucket) {
31+
result[index++] = num;
32+
}
2633
}
2734

2835
return result;

src/code/java/sorting_algorithms/counting_sort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import java.util.Arrays;
22

33

4-
public int[] countingSort(int[] arr) {
4+
public static int[] countingSort(int[] arr) {
55
int maxNum = Arrays.stream(arr).max().orElse(Integer.MIN_VALUE);
66
int minNum = Arrays.stream(arr).min().orElse(Integer.MAX_VALUE);
77
int countRange = maxNum - minNum + 1;

src/code/java/sorting_algorithms/cube_sort.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,37 +3,40 @@
33
import java.util.List;
44

55

6-
public void cubeSort(int[] arr, int processors) {
6+
public static void cubeSort(int[] arr, int processors) {
77
int n = arr.length;
88
List<int[]> subarrays = new ArrayList<>();
9-
int subarraySize = n / processors;
9+
int subarraySize = (n + processors - 1) / processors;
1010

1111
for (int i = 0; i < processors; i++) {
12-
int[] subarray = Arrays.copyOfRange(arr, i * subarraySize, (i + 1) * subarraySize);
12+
int[] subarray = new int[Math.min(subarraySize, n - i * subarraySize)];
13+
System.arraycopy(arr, i * subarraySize, subarray, 0, subarray.length);
1314
Arrays.sort(subarray);
1415
subarrays.add(subarray);
1516
}
1617

1718
for (int dimension = 0; dimension < Integer.SIZE - 1; dimension++) {
1819
for (int i = 0; i < processors; i++) {
1920
int partner = i ^ (1 << dimension);
20-
if (i < partner) {
21+
22+
if (i < partner && partner < processors) {
2123
int[] merged = merge(subarrays.get(i), subarrays.get(partner));
22-
subarrays.set(i, Arrays.copyOfRange(merged, 0, subarraySize));
23-
subarrays.set(partner, Arrays.copyOfRange(merged, subarraySize, merged.length));
24+
System.arraycopy(merged, 0, subarrays.get(i), 0, subarraySize);
25+
System.arraycopy(merged, subarraySize, subarrays.get(partner), 0, subarraySize);
2426
}
2527
}
2628
}
2729

2830
int index = 0;
31+
2932
for (int[] subarray : subarrays) {
3033
for (int num : subarray) {
3134
arr[index++] = num;
3235
}
3336
}
3437
}
3538

36-
public int[] merge(int[] arr1, int[] arr2) {
39+
public static int[] merge(int[] arr1, int[] arr2) {
3740
int[] merged = new int[arr1.length + arr2.length];
3841
int i = 0, j = 0, k = 0;
3942

src/code/java/sorting_algorithms/heap_sort.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
public int[] heapSort(int[] arr) {
1+
public static int[] heapSort(int[] arr) {
22
int n = arr.length;
33

44
for (int i = n / 2 - 1; i >= 0; i--) {
@@ -16,7 +16,7 @@ public int[] heapSort(int[] arr) {
1616
return arr;
1717
}
1818

19-
public void heapify(int[] arr, int n, int i) {
19+
public static void heapify(int[] arr, int n, int i) {
2020
int largest = i;
2121
int left = 2 * i + 1;
2222
int right = 2 * i + 2;

src/code/java/sorting_algorithms/insertion_sort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
public void insertionSort(int[] arr) {
1+
public static void insertionSort(int[] arr) {
22
int n = arr.length;
33

44
for (int i = 1; i < n; i++) {

src/code/java/sorting_algorithms/merge_sort.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import java.util.Arrays;
22

33

4-
public int[] mergeSort(int[] arr) {
4+
public static int[] mergeSort(int[] arr) {
55
int n = arr.length;
66

77
if (n <= 1) {
@@ -18,7 +18,7 @@ public int[] mergeSort(int[] arr) {
1818
return merge(left, right);
1919
}
2020

21-
public int[] merge(int[] left, int[] right) {
21+
public static int[] merge(int[] left, int[] right) {
2222
int[] output = new int[left.length + right.length];
2323
int i = 0, j = 0, k = 0;
2424

src/code/java/sorting_algorithms/pancake_sort.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
public void pancakeSort(int[] arr) {
1+
public static void pancakeSort(int[] arr) {
22
int n = arr.length;
33

44
for (int size = n; size >= 2; size--) {
@@ -11,7 +11,7 @@ public void pancakeSort(int[] arr) {
1111
}
1212
}
1313

14-
public void flip(int[] arr, int i) {
14+
public static void flip(int[] arr, int i) {
1515
int left = 0;
1616

1717
while (left < i) {
@@ -23,7 +23,7 @@ public void flip(int[] arr, int i) {
2323
}
2424
}
2525

26-
public int findMaxIndex(int[] arr, int n) {
26+
public static int findMaxIndex(int[] arr, int n) {
2727
int maxIdx = 0;
2828

2929
for (int i = 0; i < n; i++) {

src/code/java/sorting_algorithms/quick_sort.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import java.util.List;
33

44

5-
public int[] quickSort(int[] arr) {
5+
public static int[] quickSort(int[] arr) {
66
int n = arr.length;
77

88
if (n <= 1) {
@@ -23,8 +23,8 @@ public int[] quickSort(int[] arr) {
2323

2424
int[] sortedLeft = quickSort(left.stream().mapToInt(i -> i).toArray());
2525
int[] sortedRight = quickSort(right.stream().mapToInt(i -> i).toArray());
26-
2726
int[] result = new int[n];
27+
2828
System.arraycopy(sortedLeft, 0, result, 0, sortedLeft.length);
2929
result[sortedLeft.length] = pivot;
3030
System.arraycopy(sortedRight, 0, result, sortedLeft.length + 1, sortedRight.length);

0 commit comments

Comments
 (0)