时间复杂度的计算

前言   

由于本人也是初学者,所以本篇对时间复杂度进行简单的介绍

               衡量算法的效率一般是从时间和空间两个维度去考虑的,在正常情况下我们一般不考虑空间复杂度,我们只需要关注算法的时间复杂度就行了。

一. 常见的时间复杂度

               常见的时间复杂度包括常数时间O(1),线性时间O(n),对数时间O(logn),平方时间O(n^2)等。学会分析时间复杂度可以让我们在做题时,选择更好的解题方法。

二. 时间复杂度的计算

                时间复杂度通常是指程序在最坏情况下的执行时间,在计算时间复杂度时我们关注的是复杂度的数量级,一般来说,评测机一秒大约跑2e8次运算。

下面来看一个时间复杂度为O(n)的实例

#include<stdio.h>
int main(){
	int n,s=-1;
	double sum=0,a=1,b=1;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		s=-s;
		sum=sum+s*a/b;
		a++;b=b+2;
	}
	printf("%.3f",sum);
}

可以看的出来这个程序中,最主要的就是一个for循环,下标i从1循环到n,循环次数跟n的大小线性相关,所以时间复杂度为为O(n).

时间复杂度为O(n^2)的代码

void sort(int arr[], int n)
{
    int i, j, temp;
    for (i = 0; i < n - 1; i++)
    {
        for (j = 0; j < n - i - 1; j++)
        {
            if (arr[j] > arr[j+1])
            {
                // 交换相邻元素的位置
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

这个冒泡排序大家应该都记得,在最坏情况下,即使排序的元素已经按照逆序排列,每轮也需要进行n-1次比较和交换操作,因此总的时间复杂度为O(n^2).

后续会进行完善和补充

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值