資料結構演算法的時間複雜度資料結構與演算法,請問時間複雜度是怎麼判定的?

2021-03-06 16:31:28 字數 5300 閱讀 2009

1樓:匿名使用者

按照分析慣例,假設所有單一運算的時間複雜度均為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))

2樓:匿名使用者

************我談**********************

「如果執行時間的演算法不按照問題規模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; + +),除非你終止!!

3樓:

n^(1/2)-y0=o(n^(1/2))

資料結構與演算法,請問時間複雜度是怎麼判定的?

4樓:匿名使用者

顯然是c

外層k增長速度了 *2 意味著 跑完n個數 只需要logn次,內層n 是線性增長, 時間複雜度是n

乘一起就是 o(nlogn)

複雜度就是幾種,線性的 n, 多項式的 n^k 冪指數 k^n , logn, 其中n的係數是多少都無關緊要,時間複雜度的基礎就是n的增長速度,2n也是n ; (2n)^2 也是n^2

5樓:月光星屑

計算時間複雜度的時候一般把 加 和 乘 的係數去掉,比如:o(0.5*n^2+n+0.5)記為o(n^2)

6樓:匿名使用者

演算法是處理資料的一種方法,最終也是為了解決某乙個或某一類問題,而通常情況下,問題的解決思路都不只一種!所以看情況而定!

資料結構中演算法的時間複雜度是什麼?

7樓:曹妃賁溪

程式所用時間關於資料規模的函式

比如:給n個數排序需要n^2的時間

時間複雜度專就是o(n^2)

通常屬有

o(2)

常數與輸入資料規模無關

o(n)

成正比o(log2n)

平方與資料規模成正比

o(n^2)

與資料規模的平方成正比

o(n^3)

……三次方……

o(n!)階乘

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

8樓:匿名使用者

你好.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」的語句的頻度分別為1.n和n的平方.則這三個程式段的時間複雜度分別 為.o(1).

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

有點抽象...因為本人也學不好.所以.只能回答這些..見諒..

9樓:匿名使用者

排序演算法 所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。 分類 在電腦科學所使用的排序演算法通常被分類為: 計算的複雜度(最差、平均、和最好表現),依據串列(list)的大小(n)。

一般而言,好的表現是o。(n log n),且壞的行為是ω(n2)。對於乙個排序理想的表現是o(n)。

僅使用乙個抽象關鍵比較運算的排序演算法總平均上總是至少需要ω(n log n)。 記憶體使用量(以及其他電腦資源的使用) 穩定度:穩定排序演算法會依照相等的關鍵(換言之就是值)維持紀錄的相對次序。

也就是乙個排序演算法是穩定的,就是當有兩個有相等關鍵的紀錄r和s,且在原本的串列中r出現在s之前,在排序過的串列中r也將會是在s之前。 一般的方法:插入、交換、選擇、合併等等。

交換排序包含氣泡排序(bubble sort)和快速排序(quicksort)。選擇排序包含shaker排序和堆排序(heapsort)。 當相等的元素是無法分辨的,比如像是整數,穩定度並不是乙個問題。

然而,假設以下的數對將要以他們的第乙個數字來排序。 (4, 1) (3, 1) (3, 7) (5, 6) 在這個狀況下,有可能產生兩種不同的結果,乙個是依照相等的鍵值維持相對的次序,而另外乙個則沒有: (3, 1) (3, 7) (4, 1) (5, 6) (維持次序) (3, 7) (3, 1) (4, 1) (5, 6) (次序被改變) 不穩定排序演算法可能會在相等的鍵值中改變紀錄的相對次序,但是穩定排序演算法從來不會如此。

不穩定排序演算法可以被特別地時作為穩定。作這件事情的乙個方式是人工擴充鍵值的比較,如此在其他方面相同鍵值的兩個物件間之比較,就會被決定使用在原先資料次序中的條目,當作乙個同分決賽。然而,要記住這種次序通常牽涉到額外的空間負擔。

排列演算法列表 在這個**中,n是要被排序的紀錄數量以及k是不同鍵值的數量。 穩定的 氣泡排序(bubble sort) — o(n2) 雞尾酒排序 (cocktail sort, 雙向的氣泡排序) — o(n2) 插入排序 (insertion sort)— o(n2) 桶排序 (bucket sort)— o(n); 需要 o(k) 額外 記憶體 計數排序 (counting sort) — o(n+k); 需要 o(n+k) 額外 記憶體 歸併排序 (merge sort)— o(n log n); 需要 o(n) 額外記憶體 原地歸併排序 — o(n2) 二叉樹排序 (binary tree sort) — o(n log n); 需要 o(n) 額外記憶體 鴿巢排序 (pigeonhole sort) — o(n+k); 需要 o(k) 額外記憶體 基數排序 (radix sort)— o(n·k); 需要 o(n) 額外記憶體 gnome sort — o(n2) library sort — o(n log n) with high probability, 需要 (1+ε)n 額外記憶體 不穩定 選擇排序 (selection sort)— o(n2) 希爾排序 (shell sort)— o(n log n) 如果使用最佳的現在版本 ***b sort — o(n log n) 堆排序 (heapsort)— o(n log n) **oothsort — o(n log n) 快速排序 (quicksort)— o(n log n) 期望時間, o(n2) 最壞情況; 對於大的、亂數串列一般相信是最快的已知排序 introsort — o(n log n) patience sorting — o(n log n + k) 最外情況時間, 需要 額外的 o(n + k) 空間, 也需要找到最長的遞增子串行(longest increasing subsequence) 不實用的排序演算法 bogo排序 — o(n × n!) 期望時間, 無窮的最壞情況。

stupid sort — o(n3); 遞迴版本需要 o(n2) 額外記憶體 bead sort — o(n) or o(√n), 但需要特別的硬體 pancake sorting — o(n), 但需要特別的硬體 排序的演算法 排序的演算法有

資料結構中演算法的時間複雜度怎麼理解?

10樓:段幹桂枝莫媚

比如資料規模n,時間複雜度就是執行開始到結束大概需要迴圈的平均次數

跟n的關係

資料結構中演算法的時間複雜度是什麼?

11樓:匿名使用者

程式所用時間關於資料規模的函式

比如:給n個數排序需要n^2的時間

時間複雜度就是o(n^2)

通常有o(2) 常數 與輸入資料規模無關

o(n) 成正比

o(log2n) 平方與資料規模成正比

o(n^2) 與資料規模的平方成正比

o(n^3) ……三次方……

o(n!) 階乘

資料結構演算法:求時間複雜度和空間複雜度 5

12樓:聽不清啊

(1)時間複雜度 o(logn)

空間複雜度 o(1)

(2)時間複雜度 o(logn)

空間複雜度 o(logn)

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

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

C語言資料結構演算法和C 資料結構演算法有什麼區別嗎??進來看看

你就直接學c 也應該要把c語言搞清楚,c語言的 寫起來要比c 繁瑣一些,不過學習的時候也理解更深刻。不用換,演算法 資料結構是程式設計的 核心,無論什麼語言 所用到的演算法 資料結構是內 一樣的容 唯一的影響可能是書裡一些c語言的 你可能不太懂 會對你的學習有一定的影響,不過影響不大 c 和c語言 ...

學資料結構和演算法之前要先學什麼,請問資料結構和演算法二者之間究竟是什麼關係?應該先學哪乙個?

學習演算法和資料結構就是把你的程式執行速度變得更快,記憶體需求變得更小,長度變得更短。正式進入資料結構和演算法前需要了解下c 記憶體的那些事。在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。棧,在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執...