assignment 3
This commit is contained in:
76
assignments/assignment3/NumberSorter.java
Normal file
76
assignments/assignment3/NumberSorter.java
Normal file
@ -0,0 +1,76 @@
|
||||
// Define the NumberSorter interface
|
||||
interface NumberSorter {
|
||||
void sortNumbers(int[] array);
|
||||
}
|
||||
|
||||
// BubbleSort class implementing the NumberSorter interface
|
||||
class BubbleSort implements NumberSorter {
|
||||
@Override
|
||||
public void sortNumbers(int[] array) {
|
||||
int n = array.length;
|
||||
for (int i = 0; i < n - 1; i++) {
|
||||
for (int j = 0; j < n - i - 1; j++) {
|
||||
if (array[j] < array[j + 1]) {
|
||||
// Swap array[j] and array[j + 1]
|
||||
int temp = array[j];
|
||||
array[j] = array[j + 1];
|
||||
array[j + 1] = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MergeSort class implementing the NumberSorter interface
|
||||
class MergeSort implements NumberSorter {
|
||||
@Override
|
||||
public void sortNumbers(int[] array) {
|
||||
mergeSort(array, 0, array.length - 1);
|
||||
}
|
||||
|
||||
// Helper function for merge sort
|
||||
private void mergeSort(int[] array, int left, int right) {
|
||||
if (left < right) {
|
||||
int mid = (left + right) / 2;
|
||||
mergeSort(array, left, mid); // Sort the left half
|
||||
mergeSort(array, mid + 1, right); // Sort the right half
|
||||
merge(array, left, mid, right); // Merge the sorted halves
|
||||
}
|
||||
}
|
||||
|
||||
// Merging two halves of the array in descending order
|
||||
private void merge(int[] array, int left, int mid, int right) {
|
||||
int n1 = mid - left + 1;
|
||||
int n2 = right - mid;
|
||||
|
||||
int[] leftArray = new int[n1];
|
||||
int[] rightArray = new int[n2];
|
||||
|
||||
System.arraycopy(array, left, leftArray, 0, n1);
|
||||
System.arraycopy(array, mid + 1, rightArray, 0, n2);
|
||||
|
||||
int i = 0, j = 0, k = left;
|
||||
while (i < n1 && j < n2) {
|
||||
if (leftArray[i] > rightArray[j]) {
|
||||
array[k] = leftArray[i];
|
||||
i++;
|
||||
} else {
|
||||
array[k] = rightArray[j];
|
||||
j++;
|
||||
}
|
||||
k++;
|
||||
}
|
||||
|
||||
while (i < n1) {
|
||||
array[k] = leftArray[i];
|
||||
i++;
|
||||
k++;
|
||||
}
|
||||
|
||||
while (j < n2) {
|
||||
array[k] = rightArray[j];
|
||||
j++;
|
||||
k++;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user