在C語言中怎樣報告一個演算法的執行時間

時間 2023-03-19 22:15:10

1樓:匿名使用者

#include //標頭檔案。

void main()

這是我在做快排和冒泡比較時用到的一段**,看完你應該很清楚了o(∩_o~

2樓:希望村村民

clock()

clock()是c/c++中的計時函式,而與其相關的資料型別是clock_t。在msdn中,查得對clock函式定義如下:

clock_t clock(void) ;

這個函式返回從「開啟這個程式程序」到「程式中呼叫clock()函式」時之間的cpu時鐘計時單元(clock tick)數,在msdn中稱之為掛鐘時間(wal-clock);若掛鐘時間不可取,則返回-1。其中clock_t是用來儲存時間的資料型別,在檔案中,我們可以找到對它的定義:

#ifndef _clock_t_defined

typedef long clock_t;

#define _clock_t_defined

#endif

很明顯,clock_t是一個長整形數。在檔案中,還定義了一個常量clocks_per_sec,它用來表示一秒鐘會有多少個時鐘計時單元,其定義如下:

#define clocks_per_sec ((clock_t)1000)

可以看到每過千分之一秒(1毫秒),呼叫clock()函式返回的值就加1。下面舉個例子,你可以使用公式clock()/clocks_per_sec來計算一個程序自身的執行時間:

void elapsed_time()

#include

#include

#include

int main(void)

在筆者的機器上,執行結果如下:

time to do 10000000 empty loops is seconds

上面我們看到時鐘計時單元的長度為1毫秒,那麼計時的精度也為1毫秒,那麼我們可不可以通過改變clocks_per_sec的定義,通過把它定義的大一些,從而使計時精度更高呢?通過嘗試,你會發現這樣是不行的。在標準c/c++中,最小的計時單位是一毫秒。

c語言資料結構中的演算法分析裡的執行時間的問題

3樓:

線性疊加起來不影響漸進複雜度,就這麼簡單。

大o表示法表示的是演算法的漸進複雜度,他的意思是說,表示一個演算法的計算量與其接受的資料之間的一個攀升關係。而不是代表絕對的計算量。

比如o(n)表示線性漸進,也就是說,當資料量n提升的時候,演算法的複雜度會跟著程線性上升。

而o(n^2)表示二次漸進,當資料量翻一倍,計算量就變成4倍。

以此類推。所以這裡面,常熟係數是沒有任何影響的,無論實際上計算量是n還是2n,計算量的上升速度都是線性的,都表示為o(n)

由於t1和t2是線性疊加的,所以他們並不影響漸進速度。

或者換一種方式,t1(n)+t2(n) =o(2f(n)) o(f(n)) 因為常數係數沒有影響。

4樓:匿名使用者

t1(n)=o(f(n))表示lim(n-->00)t1(n)/f(n)=0,同理),t2(n)=o(f(n))表示lim(n-->00)t2(n)/f(n)=0,那這樣的話 lim(n-->00)(t1(n)+t2(n))/f(n)=0+0=0,因此t1(n)+t2(n)=o(f(n))。

一個C語言問題? 50,在c語言中的問題?

你好,請問你有什麼問題,看能不能幫到你。提問 因為輸入中有空格,不能使用printf函式的 s的格式輸入。如果輸入不含空格,可以用printf函式。提問。可以寫一下這個程式嗎。可以。用scanf的 字串不能用空格 請等一下。main 用這個程式,輸入字串時,不能帶有空格。它會自動在空格處截斷,忽略後...

請教c語言中的問題,請教一個c語言中的問題?

不對int n n 意思是定義了一個指標變數n指向int型 n 等價於 n 就是先取n指向變數的值 然後讓n 1 n也就是讓n指向下一地址 而且這樣用必須先給n賦一個安全的地址才行 對啊,你用 幹什麼,有不是指標.就是 號自增 資深癩 int n n 或者int n n 以上都行 兩個的區別是 n ...

c語言中語句太長用什麼換行,C語言中一個語句太長用什麼換行

蟲心菜 1 區分不同情況,有多種方式可以採用。不管是哪種情況,都可以用 結尾作為換行標記,在編譯時,後面的換行符將被忽略,當做一行處理。比如巨集定義時使用 define my puts x printf s x 和寫作 define my puts x printf s x 是沒區別的。這裡的 必須...