Upload files to "/"

This commit is contained in:
Evan Niederwerfer 2025-03-20 23:31:48 -04:00
commit 7f8b47803d

238
Sorting.java Normal file
View File

@ -0,0 +1,238 @@
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.*;
class MergeSort {
static void merge(int values[], int l, int m, int r) {
int n1 = m - l + 1;
int n2 = r - m;
int L[] = new int[n1];
int R[] = new int[n2];
for (int i = 0; i < n1; ++i)
L[i] = values[l + i];
for (int j = 0; j < n2; ++j)
R[j] = values[m + 1 + j];
int i = 0, j = 0;
int k = l;
while (i < n1 && j < n2) {
if (L[i] <= R[j]) {
values[k] = L[i];
i++;
} else {
values[k] = R[j];
j++;
}
k++;
}
while (i < n1) {
values[k] = L[i];
i++;
k++;
}
while (j < n2) {
values[k] = R[j];
j++;
k++;
}
System.out.println(Arrays.toString(values).replace("[", "").replace("]", "").replace(" ", ""));
}
static void mergeSort(int[] values, int l, int r) {
int n = values.length;
if (l < r) {
// Find the middle point
int m = l + (r - l) / 2;
// Sort first and second halves
mergeSort(values, l, m);
mergeSort(values, m + 1, r);
// Merge the sorted halves
merge(values, l, m, r);
}
}
}
class QuickSort {
static int partition(int[] values, int low, int high) {
int pivot = values[high];
int i = low - 1;
for (int j = low; j <= high - 1; j++) {
if (values[j] < pivot) {
i++;
swap(values, i, j);
}
}
swap(values, i + 1, high);
return i + 1;
}
static void swap(int[] values, int i, int j) {
int temp = values[i];
values[i] = values[j];
values[j] = temp;
}
static void quick_sort(int[] values, int low, int high) {
System.out.println(Arrays.toString(values).replace("[", "").replace("]", "").replace(" ", ""));
if (low < high) {
int pi = partition(values, low, high);
quick_sort(values, low, pi - 1);
quick_sort(values, pi + 1, high);
}
}
}
public class Sorting {
static void insertion_sort(int[] values) {
System.out.println(Arrays.toString(values).replace("[", "").replace("]", "").replace(" ", ""));
int n = values.length;
for (int i = 1; i < n; ++i) {
int key = values[i];
int j = i - 1;
while (j >= 0 && values[j] > key) {
values[j + 1] = values[j];
j = j - 1;
}
values[j + 1] = key;
System.out.println(Arrays.toString(values).replace("[", "").replace("]", "").replace(" ", ""));
}
System.out.println(Arrays.toString(values).replace("[", "").replace("]", "").replace(" ", "")); // Print out to CSV file ?
}
static void selection_sort(int[] values) {
int n = values.length;
System.out.println(Arrays.toString(values).replace("[", "").replace("]", "").replace(" ", ""));
for (int i = 0; i < n - 1; i++) {
int min = i;
for (int j = i + 1; j < n; j++) {
if (values[j] < values[min]) {
min = j;
}
}
if (min != i) {
int temp = values[i];
values[i] = values[min];
values[min] = temp;
System.out.println(Arrays.toString(values).replace("[", "").replace("]", "").replace(" ", "")); // Print out to CSV file ?
}
}
System.out.println(Arrays.toString(values).replace("[", "").replace("]", "").replace(" ", ""));
}
public static void main(String[] args)
{
String csv_file = args[0];
String option = args[1];
try (BufferedReader reader = new BufferedReader(new FileReader(csv_file))) {
String line = reader.readLine();
String[] values = line.split(",");
int[] intArray = new int[values.length];
for (int i = 0; i < values.length; i++) {
intArray[i] = Integer.parseInt(values[i].trim());;
}
switch (option) {
case "1" -> insertion_sort(intArray);
case "2" -> selection_sort(intArray);
case "3" -> {
QuickSort.quick_sort(intArray, 0, intArray.length - 1);
System.out.println(Arrays.toString(intArray).replace("[", "").replace("]", "").replace(" ", "")); // Print out to CSV file ?
}
case "4" -> {
System.out.println(Arrays.toString(intArray).replace("[", "").replace("]", "").replace(" ", ""));
MergeSort.mergeSort(intArray, 0, intArray.length - 1);
System.out.println(Arrays.toString(intArray).replace("[", "").replace("]", "").replace(" ", ""));
}
case null, default -> System.out.println("Invalid argument for option: must be between 1 and 4");
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}