Как я могу проверить время выполнения Java-программы? - PullRequest
0 голосов
/ 11 июня 2019

Мне нужно проверить, является ли массив под-массивом другого большего массива.(найти слово (подмассив) в предложении (массиве)).

Мне нужно сделать это в алгоритме рекурсии.что время выполнения будет log (n).

массивы:

        char[] sentence = {'h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd'};
    char[] word = {'l', 'l', 'o', 'w', 'o', 'r'};
                char [] word = {'t', 'n' , 'p'};

мой код:

    static boolean wordFinder(char[] arr, char[] arr2, int l, int i) {

    if (i == arr2.length - 1) {
        return true;
    }
    if (arr[l] == arr2[i]) {
        return wordFinder(arr, arr2, l + 1, i + 1);
    }
    if (l == arr.length - 1) {
        return false;
    }
    return wordFinder(arr, arr2, l + 1, 0);


}

третий массив предназначен только для проверки кода,(код работает, просто нужно знать время выполнения).

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Сложность исполнения вашей программы O (n * m) .Здесь n - это длина или arr, а m - это длина arr2 , почему: , потому что в каждой рекурсии есть фактически вложенный цикл в каждой рекурсии.Один цикл для итерации по arr, а другой - итерация по arr2 для каждого элемента arr.

Ну, минимальная сложность будет O (n) .

Обновление: посмотрите на эту ссылку: check-string-substring-another

0 голосов
/ 11 июня 2019

Похоже, вы заинтересованы в тестировании того, сколько времени занимает выполнение блока кода.Для этого просто запишите время до и после в миллисекундах, а затем вычтите их.

long start_time = System.currentTimeMillis();

...
...

long end_time = System.currentTimeMillis();

System.out.println("Code completed in " + (end_time - start_time) + "milliseconds.");

Там также System.nanoTime() для наносекунд.

...