数据结构-001(数据结构前言)

一,什么是数据结构和算法?

数据结构是计算机存储,组织数据的方式,之相互之间存在特定关系的数据元素的集合。

算法是定义良好的计算过程,简单来说算法就是一系列的计算步骤,用来将输入数据转化成为输出结果。

二,算法的效率

衡量一个算法的好坏,一般是从时间和空间的角度来衡量的。时间复杂度主要衡量一个算法的运行快慢,空间复杂度主要衡量一个算法运行所需要的额外空间。·

(一)时间复杂度:

算法中基本操作的执行次数,为算法的时间复杂度。

例如以下的代码:

void Func(int N)
{
    int count = 0;

    //代码段1
    for (int i = 0; i < N ; ++ i) 
    {
        for (int j = 0; j < N ; ++ j)
        {
        ++count;
        }
    }

    //代码段2
    for (int k = 0; k < 2 * N ; ++ k) 
    {
    ++count; 
    }    

    //代码段3
    int M = 10;
    while (M--) 
    {
    ++count; 
    } 
}

代码段1:在i中,循环n次;在i增大时,j随着i的增大,也进行循环且每当i增加1,j循环n次。所以                   代码段一的循环次数是n^2。

代码段2:k会循环2n次。

代码段3:当M为0时会结束,所以循环次数为10次。

所以对于这个Func函数,它的具体操作次数是:

                      F(N) = N ^ 2 + 2 * N + 10

但是准确的时间复杂度,不方便对代码的效率进行比较,我们只需要大概的执行次数,就可以来评估代码效率的高低。

大O的渐进表示法:去掉了对结果影响不大的项,简洁地表示了执行次数

用1表示常数;只保留最高阶项;去掉相乘的常数。

对于上面的例子,可以写作:O(N^2)

(二)空间复杂度

不是算新开辟的字节数,而是算为了算法临时开辟的对象变量的个数。

空间复杂度也是一个数学表达式,也可以使用大O的渐进表示法。

(三)常见复杂度的对比

O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(2^n) < O(n!)

logn默认是以2为底的,要注意不是10。

一般来说,对于复杂度是立方阶以上的算法就不推荐使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值