Счетчик операций основной сортировки вставок - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть задание, которое сравнивает вставку и сортировку слиянием, используя эмпирический анализ алгоритмов, и я использую базовый счетчик операций для измерения эффективности.Мой вопрос: нормально ли, чтобы количество операций было одинаковым каждый раз для одного и того же размера ввода?(зная, что я генерирую случайные значения, поэтому значения различны для каждого прогона)

Это мой метод (в Java):

public static void insertionSort(int[] randomArray) {
    int key, j;
    for (int i = 1; i < randomArray.length; i++) {
        key = randomArray[i];
        j = i - 1;
        increasCounter();
        while (j >= 0 && randomArray[j] > key) {
            randomArray[j + 1] = randomArray[j];
            j--;
        }
        randomArray[j + 1] = key;
    }
}

, где основной операцией является сравнение "randomArray [j]> key "

1 Ответ

0 голосов
/ 17 ноября 2018

я думаю, что вы должны увеличивать счетчик только внутри этого кода

while (j >= 0 && randomArray[j] > key) {
        increaseCounter();
        randomArray[j + 1] = randomArray[j];
        j--;
    }

мы рассчитываем эффективность, необходимую вам для подсчета количества шагов, которые программа выполняет перед завершением, код перед подсчетом только, сколько развнутри цикла for он не считает цикл внутри while и заставляет его считать только номер массива

...