某演算法的時間複雜度為On,表明該演算法的

2021-03-04 01:58:36 字數 4817 閱讀 1863

1樓:真真

選c說明演算法的時間複雜度tn小於等於**(c為比例常數),即tn=o(n),時間複雜度是問題規模n的函式。

2樓:飛沛和妙珍

乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。

t(n)=o(n*n)的意思就是演算法大概執行n的平方次,時間與執行次數成正比。,問題規模還是n。

跟o()沒有關係。

3樓:我已萌出天際

n就是問題的規模,因此a答案不對,答案是c,時間複雜度就是執行時間,o代表同數量級,至於答案b,則是c中包含的特例,一般o(n^2)得演算法並不一定是執行時間等於n^2

某演算法的時間複雜度為o(n*n),表面該演算法的() a。問題規模是n*n b.執行時間等於n*n

4樓:蛋刀狂戰

乙個演算法花費來的時間與演算法中

語源句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。

t(n)=o(n*n)的意思就是演算法大概執行n的平方次,時間與執行次數成正比。,問題規模還是n。

跟o()沒有關係。

乙個演算法的時間複雜度至少是o(n),這種演算法有意義嗎?為什麼?

5樓:匿名使用者

有意來義, 一般對於大型計算, 比如自

算天體物理, 全社會經濟模型, 核****, 密碼破解等.... 不需要費勁去研究演算法, 直接就是窮舉, 靠大型機的運算能力來獲取結果.

演算法一般都是學術研究, 實踐領域往往都是靠大型機的能力算

求滿足一下條件的演算法,時間複雜度為o(n)

6樓:滿天點點沃

對著自己的資料型別bai做相應地修改:

void delete(seqlist l, datatype x)l->length = i;

}void delete_list(linklist head, datatype x)

p = q->next;}}

快速排序方法的時間複雜度為o(n^2)=n(n-1)/2中o()是什麼意思? 200

7樓:匿名使用者

o(1): 表示演算法

的執行時間為常量

o(n): 表示該演算法是線性演算法

o(㏒2n): 二分查詢演算法

o(n2): 對陣列進行排序的各種簡單演算法,例如直接插入排序的演算法。

o(n3): 做兩個n階矩陣的乘法運算

o(2n): 求具有n個元素集合的所有子集的演算法o(n!):

求具有n個元素的全排列的演算法o(n²)表示當n很大的時候,複雜度約等於**²,c是某個常數,簡單說就是當n足夠大的時候,n的線性增長,複雜度將沿平方增長。

乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。

乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。

一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t(n)表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,t(n)/f(n)的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式。記作t(n)=o(f(n)),稱o(f(n))

為演算法的漸進時間複雜度,簡稱時間複雜度。

8樓:匿名使用者

1)對於你的問題簡單解釋如下:

理論計算機研究中,衡量演算法一般從兩個方面分析:時間複雜度和空間複雜度。空間複雜度跟時間複雜度是類似的,下面簡單解釋一下時間複雜度:

對於乙個資料規模為n的問題,解決該問題的演算法所用時間可以用含有n的函式t(n)來表示。對於絕大多數情況,我們只需要了解演算法的一般效能而不考慮細節,也就是說,我們只關心函式t(n)的表示式的形式,而不關心表示式的常數係數等與資料規模沒有關係的量值。對於函式t(n),我們又進一步將它簡化為o(n),即只考慮演算法平均執行時間的「瓶頸」,也就是t(n)表示式中,關於變數n增長最快的哪一項。

比如下面的**:

for(int i=1; i<=n*2; i++)for(int j=1; j<=n; j++)// do something here

那麼這個演算法的時間複雜度就是o(n^2),因為它有兩層迴圈,每層迴圈的資料規模都是n。注意第一層迴圈(外迴圈)要迭代n*2次,則實際上t(n)=2*n*n,而對於o(n)來說,我們忽略了常數2,只保留了n^2。這就是大o記法的乙個概括,並不精確。

對於時間複雜度的更精確、深入的解釋,可以自己查閱《演算法導論》第一章。

2)更正你的問題:快速排序演算法的時間複雜度應該為o(n lg n)。注意三種時間複雜度符號表示的不同意義!

英文本母o代表的是平均執行時間,因此對於快速排序來說應該是o(n lg n)。而使用下界函式omega或者上界函式theta則分別表示演算法執行的最快和最慢時間。對於未使用隨機化的快速排序,理論上可以證明,存在某一方法構造出一組資料使快速排序「退化」成平方複雜度演算法即theta(n^2)。

但是對於其o(n)表示法應該為o(n^2)。

分析下面程式段執行的時間複雜度o(n)

9樓:折柳成萌

常見的 查詢演算法的時間複雜度:

線性結構的查詢的時間複雜度,如 二分查詢(用於已經排好序的資料,如已序的陣列);o(n)

非線性結構的查詢的時間複雜度,如 二叉查詢樹 ;o(log n)

排序類別 時間複雜度 空間複雜度 穩定

1 插入排序 o(n2) o(1) √

2 希爾排序 o(n2) o(1) × //shell(希爾)排序是基於插入排序的,時間效率比插入、選擇、冒泡高,但又比快速排序低點;

3 氣泡排序 o(n2) o(1) √

4 選擇排序 o(n2) o(1) ×

5 快速排序 o(nlogn) o(logn) ×

6 堆排序 o(nlogn) o(1) ×

7 歸併排序 o(nlogn) o(n) √

氣泡排序、插入排序、歸併排序是穩定的,演算法時間複雜度是o(n ^2);

選擇排序、快速排序、堆排序、希爾排序都是 不穩定的;

演算法的時間複雜度

一、 時間複雜度定義

定義:如果乙個問題的規模是n,解這一問題的某一演算法所需要的時間為t(n),它是n的某一函式t(n)稱為這一演算法的「時間複雜性」。

當輸入量n逐漸加大時,時間複雜性的極限情形稱為演算法的「漸近時間複雜性」。

二、大o表示法

我們常用大o表示法表示時間複雜性,注意它是某乙個演算法的時間複雜性。大o表示只是說有上界,由定義如果f(n)=o(n),那顯然成立f(n)=o(n^2),它給你乙個上界,但並不是上確界,但人們在表示的時候一般都習慣表示前者。此外,乙個問題本身也有它的複雜性,如果某個演算法的複雜性到達了這個問題複雜性的下界,那就稱這樣的演算法是最佳演算法。

「大o記法" :在這種描述中使用的基本引數是n,即問題例項的規模,把複雜性或執行時間表達為n的函式。這裡的「o」表示量級(order),比如說「二分檢索是o(logn)的」,也就是說它需要「通過logn量級的步驟去檢索乙個規模為n的陣列」記法o ( f(n) )表示當n增大時,執行時間至多將以正比於f(n)的速度增長。

這種漸進估計對演算法的理論分析和大致比較是非常有價值的,但在實踐中細節也可能造成差異。例如,乙個低附加代價的o(n2)演算法在n較小的情況下可能比乙個高附加代價的o(nlogn)演算法執行得更快。當然,隨著n足夠大以後,具有較慢上公升函式的演算法必然工作得更快。

o(1)

temp=i;i=j;j=temp;

以上三條單個語句的頻度均為1,該程式段的執行時間是乙個與問題規模n無關的常數。演算法的時間複雜度為常數階,記作t(n)=o(1)。如果演算法的執行時間不隨著問題規模n的增加而增長,即使演算法中有上千條語句,其執行時間也不過是乙個較大的常數。

此類演算法的時間複雜度是o(1)。

o(n^2)

2.1.交換i和j的內容

sum=0; (一次)

for(i=1;i<=n;i++) (n次)

for(j=1;j<=n;j++)(n^2次)

sum++; (n^2次)

解:t(n)=2n^2+n+1 =o(n^2)

某演算法的時間複雜度o,當n=5時執行時間為50s,當n=15時,其執行時間是多少

10樓:匿名使用者

主串t,比較串p,

由於kmp演算法的思想是主串不回溯的簡化演算法,執行的時候呢在串比較的掃瞄裡面要麼執行post和posp,要版麼執行next陣列的右移,然後比較,所以字元比較最多就是為o(lentht),即不會超過o(n)

其實kmp看起來很嚇人,但是你抓住它的思想「主串不回溯」就很簡單了.

kmp演算法是一種改進的字串匹配演算法,由權d.e.knuth,j.

h.morris和v.r.

pratt同時發現,因此人們稱它為克努特——莫里斯——普拉特操作(簡稱kmp演算法)。kmp演算法的關鍵是利用匹配失敗後的資訊,儘量減少模式串與主串的匹配次數以達到快速匹配的目的。具體實現就是實現乙個next()函式,函式本身包含了模式串的區域性匹配資訊。

11樓:好人一公尺陽光

設演算法語句共執行次數為f(n),執行一次時間為k秒f(5)<=5³,k*f(5)=50

得到k=0.4

f(15)<=15³,k*f(15)=?

把k代入得到答案為1350秒

演算法的空間複雜度,時間複雜度,有窮性分別是什麼意思

通俗來說 空間複雜度是指運算過程中佔用的記憶體和輸入的漸進關係。時間複雜度是指運算過程中使用的時間和輸入的漸進關係。有窮性是指在有限時間內可以結束運算。演算法的時間複雜度與空間複雜度各是什麼意思 是說明乙個程式根據其資料n的規模大小 所使用的大致時間和空間說白了 就是表示 如果隨著n的增長 時間或空...

在中,刪除最後結點的演算法時間複雜度為O

有尾指標的連結串列中,或者循序表中。順序表和雙向迴圈連結串列中才是這樣 在n個結點的順序表中,演算法的時間複雜度是o 1 的操作是 答案是a.假設順序表l,長度為n,求第i個節點l i 直接前驅l i 1 因此為o 1 答案b需要移動n i個節點,因此為o n 答案c也需要移動n i個節點 答案d根...

稱演算法的時間複雜度為Ofn其中含義是指演算法的執行時

和f n 相同。這都什麼定義啊,就是對o 符號的曲解。o n 是什麼 o n 不是演算法,它是乙個函 數,是乙個表徵演算法時間複雜度的乙個函式。電腦科學中,演算法的時間複雜度是乙個函式,它定性描述了該演算法的執行時間。這是乙個關於代表演算法輸入值的字串的長度的函式。時間複雜度常用大o符號表述,不包括...