时间复杂度和空间复杂度的计算

  • 一.时间复杂度

  • 时间复杂度即程序运行的时间效率,算法中的基本操作的执行次数的累加,为算法的时间复杂度(用O的渐进表示)。

  • 大O的推导:①算出具体执行次数(按照最坏结果计算)②用常数1代替所有的加法常数③只保留最高项④最高阶项不是1的化为1.

  • 列题:

    void bubule_sorte(int* arr, int sz)
    {
    	for (int j = 0; j < sz - 1; j++)
    	{
    		int flag = 1;
    		for (int i = 0; i < sz - 1 - j; i++)
    		{
    			if (arr[i] > arr[i + 1])
    			{
    				flag = 0;
    				int temp = arr[i];
    				arr[i] = arr[i + 1];
    				arr[i + 1] = temp;
    			}
    		}
    		if (flag == 1)
    		{
    			break;
    		}
    	}
    }

    上述冒泡算法共运行(n-1)*n/2次,即是n*n/2-n/2次。用大O的渐进表示就是为O(N)

  • 二.空间复杂度

  • 空间复杂度即算法的空间效率,他是对临时占用存储空间大小的度量。变量个数的累加,为空间复杂度,也用大O的渐进表示。计算方法同时间复杂度

  • 例题,同上述例题:共建立6个变量,O(1)为其空间复杂度的表示

  • 三.各种大O复杂度的比较

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值