递归二分查找时间复杂度、空间复杂度和稳定性
遞歸
遞歸條件
- 自己調(diào)用自己
- 有結(jié)束條件
二分查找
二分查找對(duì)1~100亂序數(shù)字查找
l = list(range(1,101)) def bin_search(data_set,val):low = 0high = len(data_set) - 1while low <= high:mid = (low+high)//2if data_set[mid] == val:return midelif data_set[mid] < val:low = mid + 1else:high = mid - 1return n = bin_search(l,11) print(n) # 返回結(jié)果是: 10時(shí)間復(fù)雜度、空間復(fù)雜度和穩(wěn)定性
一個(gè)算法是由控制結(jié)構(gòu)(順序、分支和循環(huán)3種)和原操作(指固有數(shù)據(jù)類(lèi)型的操作)構(gòu)成的,則算法時(shí)間取決于兩者的綜合效果。為了便于比較同一個(gè)問(wèn)題的不同算法,通常的做法是,從算法中選取一種對(duì)于所研究的問(wèn)題(或算法類(lèi)型)來(lái)說(shuō)是基本操作的原操作,以該基本操作的重復(fù)執(zhí)行的次數(shù)作為算法的時(shí)間量度。
時(shí)間復(fù)雜度的概念
一般情況下,算法中基本操作重復(fù)執(zhí)行的次數(shù)是問(wèn)題規(guī)模n的某個(gè)函數(shù),用T(n)表示,若有某個(gè)輔助函數(shù)f(n),使得當(dāng)n趨近于無(wú)窮大時(shí),T(n)/f(n)的極限值為不等于零的常數(shù),則稱(chēng)f(n)是T(n)的同數(shù)量級(jí)函數(shù)。記作T(n)=O(f(n)),稱(chēng)O(f(n)) 為算法的漸進(jìn)時(shí)間復(fù)雜度,簡(jiǎn)稱(chēng)時(shí)間復(fù)雜度
常見(jiàn)的算法時(shí)間復(fù)雜度由小到大依次為:Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!)
各種算法比較
空間復(fù)雜度概念
空間復(fù)雜度(Space Complexity)是對(duì)一個(gè)算法在運(yùn)行過(guò)程中臨時(shí)占用存儲(chǔ)空間大小的量度。一個(gè)算法在計(jì)算機(jī)存儲(chǔ)器上所占用的存儲(chǔ)空間,包括存儲(chǔ)算法本身所占用的存儲(chǔ)空間,算法的輸入輸出數(shù)據(jù)所占用的存儲(chǔ)空間和算法在運(yùn)行過(guò)程中臨時(shí)占用的存儲(chǔ)空間這三個(gè)方面
算法不穩(wěn)定定義
在排序之前,有兩個(gè)數(shù)相等,但是在排序結(jié)束之后,它們兩個(gè)有可能改變順序.
說(shuō)明:
在一個(gè)待排序隊(duì)列中,A和B相等,且A排在B的前面,而排序之后,A排在了B的后面.這個(gè)時(shí)候,我們說(shuō)這種算法是不穩(wěn)定的.
不穩(wěn)定的幾種算法
- 快排為什么不穩(wěn)定
- 堆排序?yàn)槭裁床环€(wěn)定
- 選擇排序?yàn)槭裁床环€(wěn)定
空間,時(shí)間復(fù)雜度參考這個(gè)
詳細(xì)鏈接參考這個(gè)鏈接
總結(jié)
以上是生活随笔為你收集整理的递归二分查找时间复杂度、空间复杂度和稳定性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python中字典对象实现原理
- 下一篇: RabbitMQ面试题及答案