用c函式描述個演算法並求出時間複雜度

2021-03-21 16:15:05 字數 1587 閱讀 9722

1樓:匿名使用者

#include

int max=0,may=0;

int array[5][5];

void remax()

c++中的時間複雜度o(1)與o(n)有什麼區別

2樓:杜xiao若

c++中的bai時間複雜度o(du1)與o(n)的主要區別在於:zhi

1、時間複雜度o(1)是常數階

dao,其基本

內操作重複執行的次數是一個固定的容常數,執行次數不存在變化;

2、而時間複雜度o(n)是線性階,其基本操作重複執行的次數是與模組n成線性相關的,其值會隨著模組n的變化而變化,當模組n的規模確定為定值後,其時間複雜度轉化為o(1)。

擴充套件資料1.時間複雜度的計算方法:

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

3樓:幻夢·人生

時間複雜度是

來一個函源數,它定量描述了該bai演算法的執行時間。常du

見的zhi時間複雜度有以下幾種。

1,daolog(2)n,n,n log(2)n ,n的平方,n的三次方,2的n次方,n!

1指的是常數。即,無論演算法的輸入n是多大,都不會影響到演算法的執行時間。這種是最優的演算法。而n!(階乘)是非常差的演算法。當n變大時,演算法所需的時間是不可接受的。

用通俗的話來描述,我們假設n=1所需的時間為1秒。那麼當n = 10,000時。

o(1)的演算法需要1秒執行完畢。

o(n)的演算法需要10,000秒 ≈ 2.7小時 執行完畢。

o(n2)的演算法需要100,000,000秒 ≈ 3.17年 執行完畢。

o(n!)的演算法需要******xx(系統的計算器已經算不出來了)。

可見演算法的時間複雜度影響有多大。

所以o(1)和o(n)差了2.7小時,區別顯而易見。

4樓:匿名使用者

你理解錯了,bai

我舉個du例子:

你設計了一個字串zhi類:客

dao戶有時需要知道字串的專長度,

所以有兩種屬設計getlength()函式的方法1。每次客戶詢問長度,你都用迴圈檢測串長,即for(i=0;str[i]!=0;++i)這樣效率低 時間複雜度o(n)

2 每次串內容改變時才算長度,算好後存起來,以後客戶需要知道字串的長度就直接把變數值返回這樣效率高 時間複雜度o(1)

5樓:匿名使用者

o(1)複雜度是與輸入資料copy

無關,baio(n)是與輸入資料成正比。

對於du程式zhia,for(int i=0;i<1000;i++),當輸入任意的n時迴圈次數dao均為1000,複雜度為o(1);

對於程式b,for(int i=0;i

資料結構演算法c語言描述和c或c程式具體什麼關

1 程式是寫完源 後,計算機編譯後得到的可執行檔案。2 演算法一般結合數學思想,以下內容算是演算法 給陣列按大小排序 查詢陣列某元素 圖形處理演算法 音訊識別處理。但廣義上,用了順序分支迴圈就是演算法。演算法是指邏輯層面上解決問題方法的一種描述,一個演算法可以被很多不同的程式實現.演算法並不是程式或...

C 中pow函式,C 中pow(x,y)函式怎麼用?最好給舉個例子

2型別是整型,0.5屬於浮點數,而你的函式宣告裡面第一個引數是浮點數,第二個引數是整型的,int轉float double可以隱式轉換,編譯器允許這種轉換,但是float double不能隱式轉換成int,這樣可能會造成資料丟失,編譯器不允許,除非你強制轉換 在vc 6.0中原型為double po...

C語言用Bresenham演算法畫圓,哪位高手教教,主要是演算法裡的內容,謝謝

的確哈,關鍵在於對delta的理解 可以看到,都是delta 2 1 radius 這樣的,起作用應該是判斷要畫的點x y座標的變化趨勢,先把我註釋了的 貼下,加了getch 可以看到畫的過程 include include void bresenhemcircle int centerx,int ...