代码随想录学习笔记-第二章

时间复杂度分析

面试题目:求x的n次方

时间复杂度为O(n)。

int function1(int x,int n)
{
    int result=1;
    for (int i=0;i<n;i++)
    {
        result=result*x;
    }
    return result;
}

 

时间复杂度为O(n)。

int function(int x,int n)
{
    if(n==0)
    {
        return  1;
    }
    return function(x,n-1)*x;
}

 

时间复杂度为O(logn)。

int function(int x,int n)
{
    if(n==0)
    {
        return  1;
    }
    int t=function(x,n/2);
    if(n%2==1)
    {
        return t*t*x
    }
    return t*t;
}

 

个人理解:不需要遍历整个数组下空间复杂度为logn,需要遍历一遍数组空间复杂度为n,需要遍历两遍数组空间复杂度为n^2。

 

 

编程语言的内存管理

程序运行时所需内存空间

  • 固定部分:代码区:存储进制代码;数据区:全局变量、静态变量、变量、常量等;
  • 可变部分:栈区:运行方式的形参、局部变量、返回值、递归栈所需的空间(系统自动分配与回收);堆区:动态开辟的空间,存放new出来的对象在堆中的真实数据(需要手动回收)。

数据类型大小

64位编译器:char:1、short:2、int:4、long:8、float:4、double:8、指针:8。单位Byte字节(8bite位)。

为什么会有内存对齐?

  • 平台原因:不是所有的硬件平台都能访问任意内存地址上的数据,某些平台只能在一些地址初获取特定类型的数据,否则抛出硬件异常,为了使某一个程序可以在多个平台运行,需要进行内存对齐。
  • 硬件原因:经过内存对齐后,CPU访问内存的速度会大大的提升

 

 

空间复杂度分析

空间复杂度:

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值