算法学习第一天

文章讲述了在考研二战失利后转向学习算法,重点介绍了评价算法优劣的两个关键因素——时间复杂度和空间复杂度,以插入排序为例解析了时间复杂度的计算,并给出了不同时间复杂度的排序。同时提到了空间复杂度的概念,强调了额外空间复杂度的计算。
摘要由CSDN通过智能技术生成

考研二战失利,决定学习学习算法找工作。打卡学习算法的第一天。

一、什么是算法。

算法往往是是针对特定数据结构的同一问题的不同方法

二、如何评价算法的优劣?

算法的优劣由两个元素决定:时间复杂度、空间复杂度。

(1).时间复杂度

时间复杂度是衡量算法优劣的一个重要标准,计算时采用大O表示法。计算需注意如下:

1.计算时不考虑必须要做的操作如赋值、程序初始化等;

2.计算时应采用算法最坏情况时的时间复杂度作为算法最终的时间复杂度。

3.计算后的数值不考虑常数项和低次项。

如下列算法:

void mySort(int a[],int n)
{
    for(int i=1; i<n; i++)--------------------------------------1
        for(int j=i-1; j>=0&&a[j]>a[j+1]; j--)--------------------2
            Swap(&a[j+1],&a[j]);------------------------------3
}

该算法是插入排序,语句1执行了n次。语句2在数组有序即最好情况时每次循环仅执行1次,总执行n次,在数组倒序即最坏情况时每次循环均执行i次,总执行(1+n)*n/2次。3语句循环内语句,忽略不计。取最大次数为时间复杂度则O(n)=n^2/2+n/2,忽略掉低次项及常数项,该算法的最终时间复杂度为O(n)=n^2.

算法时间复杂度大小排序:

O(1)<O(log n)<O(n)<O(nlog n)<O(n^a)<O(a^n)

(2)空间复杂度:

一般计算算法的空间复杂度多计算其额外空间复杂度即在要求给出的程序占有空间基础上额外添加的空间复杂度。如在进行排序时,给定了一个数组空间,而在写程序时额外多定义了一个数组来保存原有数组,那么这个多定义的数组所占有的空间即为我们所求的额外空间复杂度,而如果要求了同时输出排序好的数组和原有数组,那么这个多定义的数组便不占有额外空间,因为它是要求的。

第一天,要求不那么高,到此为止,躺床睡觉。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值