時間復雜度為什麼叫O
⑴ 建立一個有n個元素的有序單鏈表的時間復雜度度為什麼是O(n^2) 求詳解哇……(>﹏<)
因為o(n^2),對單鏈表而言,一些快速的排序演算法,不能用,只能用直接插入等o(n^2)級的排序演算法來實現排序。因為是有序單鏈表那麼每次插入到鏈表尾結點,那麼每次插入都要從頭掃到尾,然後1+2+3+... m = O(m^2)這樣。
鏈表中的數據是以結點來表示的,每個結點的構成:元素(數據元素的映象) +指針(指示後繼元素存儲位置),元素就是存儲數據的存儲單元,指針就是連接每個結點的地址數據。以「結點的序列」表示線性表稱作線性鏈表(單鏈表),單鏈表是鏈式存取的結構。
(1)時間復雜度為什麼叫O擴展閱讀:
typedef char DataType; //假設結點的數據域類型為字元
typedef struct node{ //結點類型定義
DataType data; //結點的數據域
struct node *next;//結點的指針域
}ListNode;
typedef ListNode *LinkList;
ListNode *p;
LinkList head;
注意:
①LinkList和ListNode是不同名字的同一個指針類型。(命名的不同是為了概念上更明確)
②*LinkList類型的指針變數head表示它是單鏈表的頭指針。
③ListNode類型的指針變數p表示它是指向某一結點的指針。
⑵ 時間復雜度O與空間復雜度O是什麼意思
如果你學過數據結構的話,應該會有所了解,這兩個值,是在處理一個數據時,所花費的時間和內存佔用空間大小,進而來優化演算法的。比如數據的排序,有很多演算法,有不同的時間和空間復雜度。
⑶ 時間復雜度為什麼用O
最早是由德國數學家Paul Bachmann在1894年首先使用的,之後又被另一位德國數學家Edmund Landau在其作品中廣泛使用,因此也叫做Landau symbol(朗道符號)。真正在計算機領域被用於復雜度計算還得歸功於傳奇的Donald Knuth,Omega符號也是他引入的。
⑷ 為什麼是時間復雜度是O
but he failed And he was socked with sweat.
⑸ 時間復雜度和空間復雜度分別是什麼
時間復雜度,又稱時間復雜性,演算法的時間復雜度是一個函數,它定性描述該演算法的運行時間。這是一個代表演算法輸入值的字元串的長度的函數。時間復雜度常用大O符號表述,不包括這個函數的低階項和首項系數。使用這種方式時,時間復雜度可被稱為是漸近的,亦即考察輸入值大小趨近無窮時的情況。
空間復雜度是對一個演算法在運行過程中臨時佔用存儲空間大小的量度,記做S(n)=O(f(n))。比如直接插入排序的時間復雜度是O(n^2),空間復雜度是O(1)。而一般的遞歸演算法就要有O(n)的空間復雜度了,因為每次遞歸都要存儲返回信息。一個演算法的優劣主要從演算法的執行時間和所需要佔用的存儲空間兩個方面衡量。
時間復雜度和空間復雜度資料:
演算法復雜度分為時間復雜度和空間復雜度。其作用:時間復雜度是指執行演算法所需要的計算工作量;而空間復雜度是指執行這個演算法所需要的內存空間。(演算法的復雜性體運行該演算法時的計算機所需資源的多少上,計算機資源最重要的是時間和空間(即寄存器)資源,因此復雜度分為時間和空間復雜度。
對於一個演算法,其時間復雜度和空間復雜度往往是相互影響的。當追求一個較好的時間復雜度時,可能會使空間復雜度的性能變差,即可能導致佔用較多的存儲空間;反之,當追求一個較好的空間復雜度時,可能會使時間復雜度的性能變差,即可能導致佔用較長的運行時間。
以上內容參考網路——時間復雜度
以上內容參考網路——空間復雜度
⑹ 冒泡排序最佳情況的時間復雜度,為什麼是O
冒泡排序最佳的情況是序列已經有序,因此只需要一趟即完成排序,此時排序當次未發生數據交換,時間復雜度為O(n)。
⑺ 冒泡排序最好時間復雜度為什麼是O
冒泡排序的最佳時間復雜度是O(n),即是在序列本來就是正序的情況下。
⑻ 時間復雜度為什麼用O()表示,有什麼英文縮寫在裡面嗎/
這個首先要明確一點,只用到比較的排序演算法最低時間復雜度是O(nlogn),而像桶排這樣的只需要O(R)(R為桶的大小)
為了證明只用到比較的排序演算法最低時間復雜度是O(nlogn),首先要引入決策樹。
首先決策樹是一顆二叉樹,每個節點表示元素之間一組可能的排序,它予以京進行的比較相一致,比較的結果是樹的邊。
先來說明一些二叉樹的性質,令T是深度為d的二叉樹,則T最多有2^片樹葉。
具有L片樹葉的二叉樹的深度至少是logL。
所以,對n個元素排序的決策樹必然有n!片樹葉(因為n個數有n!種不同的大小關系),所以決策樹的深度至少是log(n!),即至少需要log(n!)次比較。
而
log(n!)=logn+log(n-1)+log(n-2)+...+log2+log1
>=logn+log(n-1)+log(n-2)+...+log(n/2)
>=(n/2)log(n/2)
>=(n/2)logn-n/2
=O(nlogn)
所以只用到比較的排序演算法最低時間復雜度是O(nlogn)。
⑼ 排序里的時間復雜度o是什麼意思
T(n)=O(f(n))
T由O和F復合得到,F是問題規模到原操作頻數的映射,O是頻數到時間的映射!
⑽ 為什麼是時間復雜度是O(1)
O(1)說明不管x、y同時增大多少倍,這段代碼都能在常數時間結束運行
其實這段代碼不能簡單的說復雜度是O(1)
說是O(10y)=O(y)更准確
x的大小對總體復雜度影響不大