1. 程式人生 > >資料結構之~~演算法複雜度的介紹

資料結構之~~演算法複雜度的介紹

在複習基本的資料結構之前,大致看了一下演算法。其實就是看了一下演算法的時間複雜度與空間複雜度的一些基本計算方式。雖然可能對初學者起的作用比較小,但是瞭解一下還是好的。可以為後面自己在做專案時候一些演算法優化的話很有幫助。
首先是**時間複雜度**:
在進行演算法分析時 語旬總的執行次撞 ( n )是關子問題規模n的函式,進而分析 ( n )隨 的變化情況並確定T(n)的數量。
演算法的時間複雜度.也就是演算法的時間量度,記 做: T ( n ) = O(f n)) 它表示隨問題規模的增大,演算法執行時間的增長率和T(n)的增長率相同,稱作i演算法的漸近時間複雜度,簡稱為時間複雜度。
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20181224231024281.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5ODk5NTc2,size_16,color_FFFFFF,t_70)
推導複雜度這個東西,我也不是特別瞭解,所以這裡不做詳細介紹及過程,感興趣的話可以去百度看下。這是我找的一個時間複雜度的一個大小排序,大家可以參考下(可以查下大O推導法)。
然後就到了**空間複雜度**
顧名思義,空間就指的是**一個演算法在執行過程中臨時佔用儲存空間大小的量度**。簡單來說就是你定義了多少變數啊,佔用了多少記憶體啊。簡單理解一下就好,後面這些東西慢慢的進行深入之後自己就會慢慢的體會到。
到現在,可能會有一些人糾結。這兩個複雜度的話設計演算法的話應該優先考慮哪個呢?
一般的話這兩個都是相輔相成的,並沒有誰比誰重要。實際上的話,如果沒有什麼特別具體要求的話,一般都是優先考慮時間複雜度,其次考慮空間複雜度的。