数据结构——时间复杂度和空间复杂度
目錄
1.什么是時(shí)間復(fù)雜度和空間復(fù)雜度
1.1時(shí)間復(fù)雜度
1.2空間復(fù)雜度
2.如何計(jì)算時(shí)間復(fù)雜度和空間復(fù)雜度
2.1使用大O階方法
2.2計(jì)算一些常用算法的時(shí)間復(fù)雜度
2.3計(jì)算一些常用算法的空間復(fù)雜度
3.對(duì)復(fù)雜度有要求的算法練習(xí)題
1.什么是時(shí)間復(fù)雜度和空間復(fù)雜度
在了解兩個(gè)復(fù)雜度之前,我們先來(lái)了解一下 什么是算法的效率。
算法的效率分為兩種:? 時(shí)間效率和空間效率
1. 時(shí)間效率被稱(chēng)為時(shí)間復(fù)雜度,它主要是衡量一個(gè)算法的運(yùn)行速度
2. 空間效率被稱(chēng)為空間復(fù)雜度,它主要是衡量一個(gè)算法所需要的額外空間
1.1時(shí)間復(fù)雜度
一個(gè)算法所花費(fèi)的時(shí)間與其中語(yǔ)句的執(zhí)行次數(shù)成正比例,算法中的基本操作的執(zhí)行次數(shù),為算法的時(shí)間復(fù)雜度。
1.2空間復(fù)雜度
空間復(fù)雜度是對(duì)一個(gè)算法的運(yùn)行過(guò)程中臨時(shí)占用存儲(chǔ)空間大小的量度。空間復(fù)雜度不是程序占用了多少字節(jié)的空間,所以空間復(fù)雜度算的是變量個(gè)數(shù)。
2.如何計(jì)算時(shí)間復(fù)雜度和空間復(fù)雜度
2.1使用大O階方法
在實(shí)際中計(jì)算空間復(fù)雜度時(shí),并不一定要計(jì)算精確的執(zhí)行次數(shù),而只需要 大概執(zhí)行的次數(shù),所以我們用 大O的漸進(jìn)表示法。
推導(dǎo)大O階方法:
1. 用 常數(shù)1取代 運(yùn)行時(shí)間中的 所有加法常數(shù).? [O(100)=>O(1)]
2. 在修改后的運(yùn)行次數(shù)函數(shù)中,只保留最高階項(xiàng) .[O(n*n+2n+10)=>O(n^2)]?[O(n+10)=>O(n)]
3. 如果最高階項(xiàng)存在且不是1,則 去除與這個(gè)項(xiàng)目相乘的常數(shù)。 得到的結(jié)果就是大O階。
2.2計(jì)算一些常用算法的時(shí)間復(fù)雜度
計(jì)算Funcl的時(shí)間復(fù)雜度?
?計(jì)算strchar的時(shí)間復(fù)雜度
?
2.3計(jì)算一些常用算法的空間復(fù)雜度
空間復(fù)雜度是對(duì)一個(gè)算法在運(yùn)行過(guò)程中臨時(shí)占用存儲(chǔ)空間大小的量度,計(jì)算的是變量個(gè)數(shù)
時(shí)間是累計(jì)的,空間是不累計(jì)的
循環(huán)走了幾次,重復(fù)利用的是一個(gè)空間
?計(jì)算冒泡排序法的空間復(fù)雜度
計(jì)算 Factorial的空間復(fù)雜度
?
?
3.對(duì)復(fù)雜度有要求的算法練習(xí)題
面試題 17.04. 消失的數(shù)字 - 力扣(LeetCode) (leetcode-cn.com)
?
189. 輪轉(zhuǎn)數(shù)組 - 力扣(LeetCode) (leetcode-cn.com)
?
總結(jié)
以上是生活随笔為你收集整理的数据结构——时间复杂度和空间复杂度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 毕业设计-基于机器视觉人脸识别技术课堂签
- 下一篇: 感应电能传输 - 英国公司推出电动汽车无