1樓:匿名使用者
看迴圈bai
或者遞迴的層du數。
zhi比如該函
dao數為版o(n)權
int f(int x,int y)
{int i,j;
for(i=0;i
而該函式為o(n2)
int f(int x,int y)
{int i,j;
for(i=0;i
某演算法的時間複雜度為o(n),表明該演算法的:
2樓:真真
選c說明演算法的時間複雜度tn小於等於**(c為比例常數),即tn=o(n),時間複雜度是問題規模n的函式。
3樓:飛沛和妙珍
一個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。一個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。
t(n)=o(n*n)的意思就是演算法大概執行n的平方次,時間與執行次數成正比。,問題規模還是n。
跟o()沒有關係。
4樓:我已萌出天際
n就是問題的規模,因此a答案不對,答案是c,時間複雜度就是執行時間,o代表同數量級,至於答案b,則是c中包含的特例,一般o(n^2)得演算法並不一定是執行時間等於n^2
一個演算法的時間複雜度至少是o(n),這種演算法有意義嗎?為什麼?
5樓:匿名使用者
有意來義, 一般對於大型計算, 比如自
算天體物理, 全社會經濟模型, 核****, 密碼破解等.... 不需要費勁去研究演算法, 直接就是窮舉, 靠大型機的運算能力來獲取結果.
演算法一般都是學術研究, 實踐領域往往都是靠大型機的能力算
時間複雜度o(n)什麼意思
6樓:飛俠·閃電
時間複雜度
演算法分析
同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。一個演算法的評價主要從時間複雜度和空間複雜度來考慮。
1、時間複雜度
(1)時間頻度
一個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且一個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。
一個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。
(2)時間複雜度
在剛才提到的時間頻度中,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)) 為演算法的漸進時間複雜度,簡稱時間複雜度。
在各種不同演算法中,若演算法中語句執行次數為一個常數,則時間複雜度為o(1),另外,在時間頻度不相同時,時間複雜度有可能相同,如t(n)=n2+3n+4與t(n)=4n2+2n+1它們的頻度不同,但時間複雜度相同,都為o(n2)。
按數量級遞增排列,常見的時間複雜度有:
常數階o(1),對數階o(log2n),線性階o(n),
線性對數階o(nlog2n),平方階o(n2),立方階o(n3),...,
k次方階o(nk),指數階o(2n)。隨著問題規模n的不斷增大,上述時間複雜度不斷增大,演算法的執行效率越低。
2、空間複雜度
與時間複雜度類似,空間複雜度是指演算法在計算機內執行時所需儲存空間的度量。記作:
s(n)=o(f(n))
我們一般所討論的是除正常佔用記憶體開銷外的輔助儲存單元規模。
拓撲排序時間複雜度o(n+e)怎麼算的?
7樓:沈偉棟
對有n個頂點和e條弧的有向圖而言,建立求各頂點的入度的時間複雜度為o(e);建零入度頂點棧的時間複雜度為o(n);在拓撲排序過程中,若有向圖無環,則每個頂點進一次棧、出一次棧,入度減1的操作在while語句中總共執行e次,所以總的時間複雜度為o(n+e)。
通常,這樣的線性序列稱為滿足拓撲次序(topological order)的序列,簡稱拓撲序列。簡單的說,由某個集合上的一個偏序得到該集合上的一個全序,這個操作稱之為拓撲排序。
時間複雜度是同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。
電腦科學中,演算法的時間複雜度是一個函式,它定性描述了該演算法的執行時間。這是一個關於代表演算法輸入值的字串的長度的函式。
時間複雜度常用大o符號表述,不包括這個函式的低階項和首項係數。使用這種方式時,時間複雜度可被稱為是漸近的,它考察當輸入值大小趨近無窮時的情況。
擴充套件資料
在計算時間複雜度的時候,先找出演算法的基本操作,然後根據相應的各語句確定它的執行次數,再找出 t(n) 的同數量級,找出後,f(n) = 該數量級,若 t(n)/f(n) 求極限可得到一常數c,則時間複雜度t(n) = o(f(n))。
按數量級遞增排列,常見的時間複雜度有:
常數階o(1),線性階o(n),
線性對數階o(nlog2n),平方階o(n^2),立方階o(n^3),...,
k次方階o(n^k),指數階o(2^n)。隨著問題規模n的不斷增大,上述時間複雜度不斷增大,演算法的執行效率越低。
8樓:星麓の守護
因為演算法中要輸出n個點(即入度為0的點輸出),要刪掉e條弧(即入度不為0的點入度減一),所以時間複雜度為o(n+e)
9樓:sun了個晒
你看一下求入度那個演算法是不是有兩個for迴圈,一個遍歷頂點,一個遍歷與這個頂點有關的邊,注意這裡不是e,兩個for的最終結果才是遍歷所有的邊,才是e,所以演算法複雜度是o(e)hiahia.
c語言中的演算法裡,時間複雜度可以記為o(n平方)。字母o 表示什麼?
10樓:匿名使用者
計算機科來學中,算自法的時間複雜度是一個函式,它定量描述了該演算法的執行時間。這是一個關於代表演算法輸入值的字串的長度的函式。時間複雜度常用大o符號表述,不包括這個函式的低階項和首項係數。
代表「order of ...」(……階)的大 o,最初是一個大寫的希臘字母希臘字母'ο'(omicron),現今用的是大寫拉丁字母『o』。
11樓:本澤馬
大baio符號是用於描述函式漸du近行為的數zhi學符號,一般用來刻畫dao
被截斷的無窮級數剩餘版項權,最先由德國數論學家保羅·**曼在其著作《解析數論》引入,並在另外一個德國數論學家艾德蒙·朗道的著作中推廣,所以又稱為朗道符號。大o是"order of..." (……階)的意思,最初是一個大寫的希臘字母'o'(omicron),現在用的大寫的英文字母'o'。
資料結構演算法並說明時間複雜度和空間複雜度
演算法主要用了一個bai額外du的先入後出的線性表 即棧zhi 假定dao陣列為版num n 流程如下 1.先申請一個能存放權n個整數的棧。2.把原有陣列的後n p個元素,從後面num n 1 到num p 開始依次壓入棧。3.把陣列的前p個元素,從num p 1 開始,把num n 1 num p...
在下列排序演算法中,哪演算法的時間複雜度與初始排序無關
在下列排序演算法中,哪一個演算法的時間複雜度與初始排序無關 a.插入排序 b.起泡排序 c.快速排序 d.選擇排序 在下列排序演算法中,哪一個演算法的時間複雜度與初始排序無關 d不管原陣列是什麼樣子,每一次你都要遍歷一邊剩餘的數來選取最大 最小值 演算法的時間複雜度與初始排序無關的都有什麼排序 常見...
請問演算法的時間複雜度是怎麼計算出來的
首先假設任意copy 一個簡單運算的時間都是1,例如a 1 a a a b 這些運算的時間都是1.那麼例如 for int i 0 i注意,這裡計算一次的時間是1.那麼上面的這個例子的時間複雜度就是 m n再例如氣泡排序的時間複雜度是n n 快排的時間複雜度是log n 詳細的情況,建議你看 演算法...