如何检查 java 程序的运行时间



我需要检查一个数组是否是另一个更大数组的子数组。(在句子(数组(中查找单词(子数组((。

我需要在递归算法中做到这一点。运行时将为 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);

}

第三个数组仅用于检查代码。(代码有效,只需要知道运行时(。

听起来你有兴趣测试一个代码块需要多长时间才能运行。为此,只需以毫秒为单位记录前后的时间,然后减去两者。

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

还有纳秒的System.nanoTime()

程序的运行时复杂度为 O(n*m(。这里 n 是长度或arrmarr2 的长度原因:因为在每个递归中,每个递归中实际上都有嵌套循环。一个循环遍历arr,另一个循环是迭代arr的每个元素的arr2

那么,最小复杂度将是O(n(。

更新:看看这个链接:检查字符串子字符串另一个

最新更新