时间复杂度_举例说明


/**
 * @author Zsx
 * 时间复杂度
 * O(1) < O(log2n) < O(n) < O(nlog2n) < O(n^2) < O(n^3) < O(n^k) < O(2^n) < O(n!)
 * @Time 2021/6/16 21:50
 */
public class TimeComplexity {

    /**
     * 举例说明
     *
     * @param args
     */
    public static void main(String[] args) {

        //时间复杂度 = O(1)
        int a = 0;
        int b = 1;

        //时间复杂度 = O(log2n)
        int i = 1;
        while (i < n) {
            i = i * 2;
        }

        //时间复杂度 = O(n)
        for (int j = 0; j < n; j++) {
            j++;
        }

        //时间复杂度 = O(nlog2n)
        for (int j = 0; j < n; j++) {
            int i = 1;
            while (i < n) {
                i = i * 2;
            }
        }

        //时间复杂度 = O(n^2)
        for (int j = 0; j < n; j++) {
            for (int k = 0; k < n; k++) {
                xxx
            }
        }

        //时间复杂度 = O(n^3)
        for (int j = 0; j < n; j++) {
            for (int k = 0; k < n; k++) {
                for (int l = 0; l < n; l++) {
                    xxx
                }
            }
        }

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当计算时间复杂度时,我们需要考虑算法中的基本操作的执行次数。以下是几个常见的时间复杂度示例及其计算过程: 1. O(1):常数时间复杂度 这表示算法的执行时间与输入规模无关,始终保持恒定。例如,访问数组中的特定元素或执行固定次数的操作。无论输入的大小如何,执行时间都是恒定的。 例如: ``` def print_element(arr): print(arr[0]) ``` 这段代码只打印数组中的第一个元素,不论数组的大小如何,只有一次操作,因此时间复杂度为O(1)。 2. O(n):线性时间复杂度 这表示算法的执行时间与输入规模成线性关系。例如,遍历数组或列表中的元素,执行n次操作。 例如: ``` def print_elements(arr): for elem in arr: print(elem) ``` 这段代码遍历了整个数组,并依次打印每个元素。执行次数与数组大小相同,因此时间复杂度为O(n)。 3. O(n^2):平方时间复杂度 这表示算法的执行时间与输入规模的平方成正比。例如,嵌套循环中每个循环执行n次操作。 例如: ``` def print_pairs(arr): for i in range(len(arr)): for j in range(len(arr)): print(arr[i], arr[j]) ``` 这段代码使用两个嵌套循环遍历数组,并打印每对元素。对于数组大小为n,内部循环将执行n次,外部循环也将执行n次,因此时间复杂度为O(n^2)。 这只是一些常见的时间复杂度示例,实际的复杂度分析可能更复杂。在进行时间复杂度分析时,需要仔细考虑算法中的循环、递归、条件语句等基本操作,并评估它们的执行次数。根据基本操作的执行次数,选择最高的阶数作为时间复杂度的表示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值