Нужна помощь с заданием для структур данных и алгоритмов. Это задание состоит из двух частей, где мы должны реализовать два алгоритма сортировки: DistributionCountingSort и InsertionSort. У меня есть завершенные части алгоритма, но я немного застрял в том, как реализовать вторую часть задания.
На данный момент у меня есть массив, инициализированный в основной части обеих программ для целей тестирования, и я передаю этот массив через оба метода сортировки. У меня уже есть часть программы, которая находит минимальное и максимальное значение массива, но я не уверен, как это будет работать при передаче .txt в качестве аргумента в терминале. Они оба, кажется, работают, но я опубликую их здесь как ссылку.
Часть задания требует четырех параметров командной строки:
- Первый параметр - это целое число, которое определяет, как многие целые числа должны быть отсортированы по алгоритму.
- Второй параметр указывает путь к текстовому файлу
- Третий параметр указывает целое минимальное значение из текстового файла
- Четвертый параметр задает максимальное целое значение текстового файла.
Я признаю, что мои навыки работы с командной строкой ржавые, но я хочу научиться делать это правильным образом для использования в будущем как способ формирования моих навыков тестирования.
Заранее спасибо.
distributionCountingSort:
import java.util.Arrays;
public class distributionCountingSort {
private static void sort(int[] arr) {
int arrayLength = arr.length;
if (arrayLength == 0) return;
int max = arr[0], min = arr[0];
for (int i = 1; i < arrayLength; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
int range = max - min + 1;
int[] count = new int[range];
for (int value : arr) count[value - min]++;
for (int i = 1; i < range; i++) count[i] += count[i - 1];
int j = 0;
for (int i = 0; i < range; i++) while (j < count[i]) arr[j++] = i + min;
System.out.println("Length of the array: " + arrayLength);
System.out.println("Max value: " + max);
System.out.println("Min value: " + min);
}
public static void main(String[] args) {
int[] testArray = {10, 13, 9, 15, 7, 13};
System.out.println("Elements before applying countingSort: " + Arrays.toString(testArray));
sort(testArray);
System.out.println("Elements after apply countingSort: " + Arrays.toString(testArray));
}
}
вставкаSort:
import java.util.Arrays;
public class insertionSort2 {
public static void main(String[] args) {
int[] unsorted = {
5, 6, 4, 2, 3, 1,
};
System.out.println("Number of elements in unsorted array: " + unsorted.length);
sort(unsorted);
System.out.println(Arrays.toString(unsorted));
}
private static void sort(int[] array) {
int n = array.length;
for (int i = 1; i < n; i++) {
int j = array[i];
int k = i - 1;
while ((k > -1) && (array[k] > j)) {
array[k + 1] = array[k];
k--;
}
array[k + 1] = j;
}
}
}