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

2021-03-04 01:58:36 字數 5785 閱讀 2499

1樓:匿名使用者

簡單說就是解決乙個問題的最多步驟次數這裡 因為有三個迴圈 所以最多要n^3次(n*n*n)所以時間複雜度是o(n^3)

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

2樓:匿名使用者

就是基本操作語句執行的次

數如果你能確定基本執行語句,那就可以假設需要執行的次數是n,然後根據程式的控制部分得到關於n的乙個函式,就可以求的了。

如int int=3;

do{i*=3;

)while(i<100);

那麼我們可以這樣立即,就是i*=3是基本語句,do~while是控制結構,在控制結構下,要保證

i*=3執行n此後,能使得最後i<100退出控制結構。

那麼你去算吧,對於i來說,每次都是乘以3,那執行n次,就相當於乘了n個3,然後滿足了<100、因此可以組成乙個函式 就是3的n次方<100那你解方程來求n

就得了。

不過時間複雜度用漸進函式表示的。

3樓:匿名使用者

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

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

4樓:匿名使用者

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

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

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

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

o(n) 成正比

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

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

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

o(n!) 階乘

資料結構中的時間複雜度怎麼算啊?看不懂啊,有沒有具體的公式

5樓:散live悠名

看迴圈的次數,比如for(k=1;k<=n;k*=2)這種巢狀迴圈;首先第乙個 k=1時候如果

小於版每次都是乘以2然後與n進行比較

權,那反過來只要進行log(2)n次,因為求的就是2的多少次方等於或者大於n,第二個的話就是1一直到n然後就是n。然後這個又是巢狀迴圈所以相乘就好了,這個時間複雜度度就是o(nlog(2)n)。這種主要是理解每一層迴圈的次數,然後巢狀就相乘,不是巢狀就取最大的那個迴圈。

6樓:殘若惜雨

時間複雜度只是乙個概念,沒有計算公式

7樓:匿名使用者

只能看**,主要是for迴圈,乙個for是n,兩個for是n平方,

8樓:倪斯榮瑩然

看迴圈的次數,bai比如for(k=1;k<=n;k*=2)這種巢狀循du環;zhi首先第乙個

k=1時候dao如果小於每

次都是乘以版2然後與權n進行比較,那反過來只要進行log(2)n次,因為求的就是2的多少次方等於或者大於n,第二個的話就是1一直到n然後就是n。然後這個又是巢狀迴圈所以相乘就好了,這個時間複雜度度就是o(nlog(2)n)。這種主要是理解每一層迴圈的次數,然後巢狀就相乘,不是巢狀就取最大的那個迴圈。

9樓:

求時間複雜度,

bai其實是在統du計基本操作步驟的執

zhi行次數。

「基本操dao作步驟」指的回是加減乘除這種。比答如有乙個for迴圈,執行n次,每次做乙個加法乙個乘法,那麼總的操作步驟數就是2n,用大o記號就是o(n).

原理就是這麼簡單,計數而已。

實際做題的時候,看清楚for迴圈的巢狀層數,就差不離。

資料結構裡面的時間複雜度怎麼計算???java版的!

10樓:匿名使用者

很簡單啊...假設 有n個資料(要求對其排序)。如果需要 執行 n*n次才能處理完,我們就說該演算法的效率是o(n*n)。同理,如果需 n 次的話,就認為是 o(n)

11樓:匿名使用者

每種結構都有不同的計算。建議看看的《資料結構(java版本)》的書

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

12樓:匿名使用者

你好.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為問題的規模(或大小).乙個上機執行的程式 除了需要儲存空間來寄存本身所用指令.常數.變數和輸入資料外.也要一些對資料進行操作 的工作單元和儲存一些為實現計算所需資訊的空間.若輸入資料所佔的空間只取決於問題本身,和演算法無關,則只要分析除輸入和程式之處的額處空間,否則應同時考慮輸入本身所需空間...

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

13樓:匿名使用者

排序演算法 所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。 分類 在電腦科學所使用的排序演算法通常被分類為: 計算的複雜度(最差、平均、和最好表現),依據串列(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), 但需要特別的硬體 排序的演算法 排序的演算法有

資料結構中 時間複雜度是如何計算的(詳細點啊……)

14樓:匿名使用者

時間複雜度:抄基本操作重複執行的bai次數的階數 t(n)=o(f(n))

以下du六種計算演算法時間zhi

的多項式是最常用的。其dao關係為:

o(1)

指數時間的關係為:

o(2n)

當n取得很大時,指數時間演算法和多項式時間演算法在所需時間上非常懸殊。

例1:nxn矩陣相乘

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

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

t(n)=n^3

資料結構與演算法 演算法的時間複雜度是怎麼求的

15樓:匿名使用者

就是求乙個多項式,比如for(i=0;i數是n次,那麼這個複雜度就內是o(n)

for(i=0;i容是n^2所以複雜度是o(n^2)

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

16樓:匿名使用者

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

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

簡單理解,時間複雜度就是執行語句被呼叫了多少次。1 如果只呼叫了一次,如 x 5 if x 4 else 在大括號中的內容,只會呼叫乙個語句,那麼o n 1 2 如果呼叫了兩次,如 x 5 if x 4 else x x 56 在大括號中的內容,只會呼叫乙個語句,但是在最後,還有乙個計算公式要呼叫語...

演算法的空間複雜度,時間複雜度,有窮性分別是什麼意思

通俗來說 空間複雜度是指運算過程中佔用的記憶體和輸入的漸進關係。時間複雜度是指運算過程中使用的時間和輸入的漸進關係。有窮性是指在有限時間內可以結束運算。演算法的時間複雜度與空間複雜度各是什麼意思 是說明乙個程式根據其資料n的規模大小 所使用的大致時間和空間說白了 就是表示 如果隨著n的增長 時間或空...

在下列排序演算法中,哪演算法的時間複雜度與初始排序無關

d不管原陣列是什麼樣子,每一次你都要遍歷一邊剩餘的數來選取最大 最小值 演算法的時間複雜度與初始排序無關的都有什麼排序 常見的幾種排序演算法複雜度如下 方式 平均 最壞 最好 插入 n 回2 n 2 n 希爾 n 1.3 冒泡 n 2 n 2 n 快速 nlogn n 2 nlogn 選擇 n 2 ...