日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

python index函数时间复杂度_如何确定Python中递归循环的时间复杂度?

發(fā)布時(shí)間:2024/9/3 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python index函数时间复杂度_如何确定Python中递归循环的时间复杂度? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

分析此函數(shù)的主要挑戰(zhàn)是沒有那么多的遞歸調(diào)用,但每次調(diào)用都會(huì)返回一個(gè)逐漸增大和增大的元素列表。特別要注意的是,有n! n個(gè)元素列表的排列。因此,我們知道如果你在一個(gè)大小為n的列表上進(jìn)行遞歸調(diào)用,將會(huì)有n!元素返回。

讓我們來看看這將如何影響運(yùn)行時(shí)。如果只有一個(gè)元素的列表,則時(shí)間復(fù)雜度為O(1)。否則,我們假設(shè)在列表中有n + 1個(gè)元素。算法然后

在大小為n的列表上進(jìn)行遞歸調(diào)用。

對(duì)于返回的每個(gè)元素,將列表的第一個(gè)元素拼接到所有可能的位置。

返回結(jié)果。

我們可以通過看在遞歸的每一層所做的工作,這意味著我們將重點(diǎn)放在步驟(2)和(3)現(xiàn)在分析遞歸總運(yùn)行時(shí)間。

請(qǐng)注意,在步驟2中,如果列表中有n + 1個(gè)元素,我們將不得不查看n!遞歸調(diào)用產(chǎn)生的排列。每個(gè)排列都有n個(gè)元素。對(duì)于每個(gè)排列,我們創(chuàng)建n + 1個(gè)新列表,其中每個(gè)列表都有n + 1個(gè)元素。因此,我們有n!循環(huán)迭代,每個(gè)循環(huán)都有(n + 1)的工作。因此,這個(gè)級(jí)別完成的總工作量(大致)為(n + 1)· ?!我們可以注意到(n + 1)· N! =(n + 1)!,所以完成的工作可以寫成(n + 1)(n + 1)!。這嚴(yán)格小于(n + 2)!,所以我們可以說在有n + 1個(gè)總元素時(shí)所做的工作是O((n + 2)!)。 (注意,我們不能說這是O(n!),因?yàn)閚!= o((n + 2)!))。

所以,現(xiàn)在我們可以說,所做的總功是(粗略地講)由

1給出! + 2! + 3! + ... +(n + 1)!

據(jù)我所知,這沒有一個(gè)很好的封閉式公式。但是,我們可以注意到,

1! + 2! + 3! + ... +(n + 1)!

=(n + 2)(n + 1)!

=(n + 2)!

所以整體表達(dá)式是O((n + 2)!)。同樣,我們有

1! + 2! + 3! + ... +(n + 1)!

>(n + 1)!

所以整體表達(dá)式是Ω((n + 1)!)。換句話說,真正的答案夾在(n + 1)之間的某個(gè)地方(漸近地)!和(n + 2)!.因此,運(yùn)行時(shí)間會(huì)快速增長(zhǎng)。

希望這會(huì)有所幫助!

總結(jié)

以上是生活随笔為你收集整理的python index函数时间复杂度_如何确定Python中递归循环的时间复杂度?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。