Программа требует несколько параметров командной строки в java, нужна помощь в реализации - PullRequest
0 голосов
/ 23 февраля 2020

Нужна помощь с заданием для структур данных и алгоритмов. Это задание состоит из двух частей, где мы должны реализовать два алгоритма сортировки: DistributionCountingSort и InsertionSort. У меня есть завершенные части алгоритма, но я немного застрял в том, как реализовать вторую часть задания.

На данный момент у меня есть массив, инициализированный в основной части обеих программ для целей тестирования, и я передаю этот массив через оба метода сортировки. У меня уже есть часть программы, которая находит минимальное и максимальное значение массива, но я не уверен, как это будет работать при передаче .txt в качестве аргумента в терминале. Они оба, кажется, работают, но я опубликую их здесь как ссылку.

Часть задания требует четырех параметров командной строки:

  1. Первый параметр - это целое число, которое определяет, как многие целые числа должны быть отсортированы по алгоритму.
  2. Второй параметр указывает путь к текстовому файлу
  3. Третий параметр указывает целое минимальное значение из текстового файла
  4. Четвертый параметр задает максимальное целое значение текстового файла.

Я признаю, что мои навыки работы с командной строкой ржавые, но я хочу научиться делать это правильным образом для использования в будущем как способ формирования моих навыков тестирования.

Заранее спасибо.

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;
    }
  }
}
...