資料結構演算法的時間複雜性

2025-01-22 18:00:14 字數 5374 閱讀 9481

1樓:匿名使用者

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

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

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

2樓:茂秋桐

如果陣列由乙個連續的記憶體空間儲存,插入乙個新元素就必須部分移動其他陣列元素,所以向陣列中插入元素的時間複雜度最差為t(n) =o(n)

但這個陣列由其他形式儲存,比如直接定址表,則插入乙個元素所需要的時間t(n) =o(1)

資料結構時間複雜度問題?

3樓:網友

第五題解析裡的式子是一種兩個連加的情亂明況,連加的具體計算過程如下圖所示,i-1代表外層迴圈的次數,當i=2時開始計算,一直連加到n-1,所以最後會變成n-1,具體操作如搏陪如圖所示,希望能為您解惑哦~

具體過程基啟,請笑納~

4樓:網友

這不是等差數列求和公式麼?

5樓:口識新

資料結構時間複雜度問題 乙個演算法慧蠢啟所需時間由以下遞迴演算法表示,試求出該演算法的時前如間複雜度的級別當n=1時,t(n)=1,當n>1時,t(n)=2t(n/檔芹2)+n;誰能解一下,答案我也沒看懂,誰能解釋下,謝謝好心人!!

資料結構中怎麼計算時間複雜度

6樓:網友

/1/ 為什麼頻度不是n次呢,n+1次是怎麼算的啊。

因為到n的時候,雖然已經不符合i/2/ 前面/1/括號裡已說明。從0到n-1,總共執行了(n-1)-0+1次。

3/ 如果單獨拿出這個內圈迴圈,頻度為2*n-0+1+1。(注意是<=)再考慮外圈迴圈,相當於執行了n次的2*n-0+1+1,所以為n*(2*n+2)。

4/ 同理1和2。內圈執行了2*n-0+1次,考慮外圈迴圈,則是n*(2*n+1)。

7樓:懶散的殺破狼

樓主,小弟不才,現在也在學習資料結構,但在算時間複雜度時實在沒遇到過你這種問題,應該是題目答案錯誤了,這與我們一直做的相違背了。

8樓:文庫精選

內容來自使用者:cx

資料結構時間複雜度的計算。

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

for(j=1;j<=i;j++)

for(k=1;k<=j;k++)

x++;它的時間複雜度是多少?

自己計算了一下,數學公式忘得差不多了,鬱悶;

1)時間複雜性是什麼?

時間複雜性就是原子運算元,最裡面的迴圈每次執行j次,中間迴圈每次執行。

a[i]=1+2+3+..i=i*(i+1)/2次 ,所以總的時間複雜性=a[1]+.a[i]+.a[n];

a[1]+.a[i]+.a[n]

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

1*n+2*(n-1)+3*(n-2)+.n*(n-(n-1))

n+2n+3n+..n*n-(2*1+3*2+4*3+..n*(n-1))

n(1+2+..n)-(2*(2-1)+3*(3-1)+4*(4-1)+.n*(n-1))

n(n(n+1))/2-[(2*2+3*3+..n*n)-(2+3+4+..n)]

n(n(n+1))/2-[(1*1+2*2+3*3+..n*n)-(1+2+3+4+..n)]

n(n(n+1))/2-n(n+1)(2n+1)/6+n(n+1)/2

所以最後結果是o(n^3)。

轉】時間複雜度的計算。

演算法複雜度是在《資料結構》這門課程的第一章裡出現的,因為它稍微涉及到一些數學問題,所以很多同學感覺很難,加上這個概念也不是那麼具體,更讓許多同學複習起來無從下手,下面我們就這個問題給各位考生進行分析。

首先了解一下幾個概念。乙個是時間複雜度,乙個是漸近時間複雜度。前者是某個演算法的時間耗費,它是該演算法所求解問題規模n的函式,而後者是指當問題規模趨向無窮大時,該演算法時間複雜。

資料結構中演算法的時間和空間複雜度怎麼計算

9樓:匿名使用者

你好.t(n)=o( f (n) )表示時間問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同.稱作 時間複雜度.如下:1. 2.

for (i=1;i<=n;++i) 3. for ( j=1; j<=n;++j ) for (k+1;j<=n;++k) 基本操作「x增1」的語句的頻度分別為和n的平方.則這三個程式段的時間複雜度分別 為.o(1). o(n)..

o(n平方).分別為常量階.線性階.和平方階...演算法可能呈現 的時間 複雜度還有對數階o(long n) .指數階o(2 n方)等 .空間複雜度: s(n)=o(f(n))其中n為問題的規模(或大小).乙個上機執行的程式 除了需要儲存空間來寄存本身所用指令.常數.變數和輸入資料外.也要一些對資料進行操作 的工作單元和儲存一些為實現計算所需資訊的空間.若輸入資料所佔的空間只取決於問題本身,和演算法無關,則只要分析除輸入和程式之處的額處空間,否則應同時考慮輸入本身所需空間。有點抽象...因為本人也學不好.所以.只能回答這些..見諒..

資料結構時間複雜度怎麼求?

10樓:

一般的,一次bai計算那麼複雜。

度du為1迴圈,則看循zhi環次數,這個可以dao

根據迴圈回條件來,比答如for(int i=0;i<10;i++)則複雜度就是10.一般寫出o(n) n是迴圈次數。

如果雙重迴圈,則是o(m*n)

看書上的例子吧。

11樓:胡珖

那個二次迴圈的時間自由度錯了,x的變化要注意。

12樓:海邊小城

結構時間複雜度怎麼求?好刀起來了沒啊怎麼了呢紅包。

資料結構 時間複雜度

13樓:張程通

該函式的功能是:判斷乙個整數是否為素數,是素數返回1,不是素數返回0演算法流程:引數為整數n

對n開平的方並取整後賦值給整型變數x

迴圈判斷:令i從2開始遞增,一直到i<=x不成立。

在迴圈體中判斷n能不能被i整除,一旦有乙個i能整除就說明不是素數,就提前跳出迴圈。

最後判斷i是否大於x,(如果沒有提前跳出迴圈,則最後i會等於x+1)如果i>x則n是素數,返回1,否則返回0

時間複雜度】最大時間複雜度為(根號n)

因為在上面的演算法中最多迴圈x次,即根號n

請問資料結構的時間複雜度如何

14樓:走勢

1.頻度計算: int sum1(int n) return(sum); //頻度:

1 } 該函的執行頻度為:3n+3(或3n+5) 2.時間複雜度計算依據「頻度」可知該函式為n的一次方,可表示為o(n),也可表示為θ(n);後者更準確。

3.(補充)求「時間複雜度」是目的,「頻度」僅是手段,前者要依據後者的計算。 4.

補充)求演算法的「時間複雜度」是為了估計和比較不同演算法處理同一問題時的效率,只「估計」即可,不必也不可能準確得出計算時間(涉及不同硬體、系統軟體和編譯系統等) 5.(補充)演算法的時間複雜度計算問題涉及漸近符的使用,去看專門的演算法分析書籍。其中有兩個重要規則:

忽略低階,忽略係數。 6."3n+3"與"3n+5"問題,當n很大時,執行的時間與+3還是+5無關。

也就是"忽略低階"。

資料結構演算法的時間複雜度

15樓:網友

按照分析慣例,假設所有單一運算的時間複雜度均為1

x=n; .1

while(x>=(y+1)*(y+1)) 4(兩次加法、1次乘法、1次比較)

y=y+1 ..1

時間複雜度 = 1 + 4 + 1) x 迴圈次數。

迴圈次數是由n和y的初始值決定的,假設迴圈次數為n,y的初始值為y0,y的結束狀態為yn,有。

x < yn + 1)*(yn + 1) .假設y的初始值為整數,則yn為滿足該式的最小整數。

n = (yn - y0) / 1 ..因為每次迴圈y的遞增量為1

1式簡化為 x = (yn + 1)*(yn + 1),可得:yn = n^(1/2) -1

所以n = n^(1/2) -1 - y0

採用大o表示法,僅考慮最高次項,則求n的複雜度為o(n^(1/2))

進而求得你這3行**的。

總體複雜度 = 1 + 4 + 1) x o(n^(1/2))

由於已知的常數項及非最高次項通常會被忽略(大o精神),所以總時間複雜度為o(n^(1/2))

16樓:網友

***我談***

如果執行時間的演算法不按照問題規模n的增加而增長,即使成千上萬的語句的演算法,其執行的時間,但也有大量的常數。該演算法的時間複雜度是o(1)。「

不要明白這一點嗎?

所以該演算法是不是說多少單一的語言。

溫度=; j;

j =溫度; />共三種語言中,和每個頻率是1,且每個頻率可以被認為是o(1),則t(n)的= o的(1)+ o(1)+ o(1)= o( 1)。

以下四個語句:

scanf的(「為%d」,&n);

n;i = 0,(i = 0,i 前兩個欄的頻率分別為。

頻率為n和n * n

1)的總頻率的所有。

o. +o (1)+ o(n)+ o(n * n)= o(n * n)

為什麼這個等式的左邊是等於右側的o(n * n)??不要問我,我懶得說了,這是乙個c / c + 的問題,這是乙個數學問題,不明白自己看到的高等數學。)

單個語句,比如for()}而( 1)}等等這樣的,可以視為乙個忘記。

乙份宣告中可以執行了n年沒有完成,如:f(i = 0; +除非你終止!!

資料結構中演算法的時間複雜度計算

17樓:網友

1、s的增長序列為:1,2,3,4,……所以迴圈loop次後s=1+2+3+……loop,s=n時結束迴圈。

由:1+2+3+……loop=n 得到: loop=o(sqrt(n));

2、迴圈loop次後, i=2^loop, 由i=n,得到: loop=log(n);

就是看迴圈執行了多少次,看執行多少步後i滿足迴圈退出的條件。

資料結構“時間複雜度”的題目,資料結構 有關時間複雜度題目 求高手!求詳細解釋

o表示法首先要弄清楚什麼用它來代表的上限的漸近執行時間的演算法函式g n o g n 代表了一組函式。介紹到演算法書定義 o g n 看到上面也可以忽略不明白,你只需要知道在低階項的漸近積極的作用,在確定上限和下限,可以忽略不計,因為當n大,他們相對來說並不重要,指數最高的專案上腳的一小部分已經超越...

什麼是資料結構和演算法,資料結構和演算法有什麼關係?資料結構就是演算法嗎?

程式 資料結構 演算法 資料結構是相互之間存在的一種或多種特定關係的資料元素的集合。包括4類基本的結構 集合 線形結構 樹形結構 圖狀或網狀結構。通俗點就是資料的邏輯結構,比方說這些資料在記憶體中以什麼樣的結構存放。演算法實際是程式設計過程中完成一件事採用的方法,比方說現實生活中做數學題時兩個人都將...

哪些資料結構與演算法需要學習,什麼是資料結構和演算法學演算法還需要去了解資料結構嗎

2談談面向bai物件,物件就是一種du資料結構zhi 什麼是資料結構和演算法?學演算法還需要去了解資料結構嗎?你這理解不完全正確。因為資料結構不只是記憶體中資料的排列,它是對資料的一種組織方式,就像圖書館要排書一樣,是為了便於操作,同時它本身也整合了對通用操作 比如查詢 比較等的支援。陣列不是一種資...