如何衡量乙個演算法的優劣

2021-09-19 14:45:14 字數 1236 閱讀 3587

演算法效率分析分為兩種:第一種是時間效率,第二種是空間效率。時間效率被稱為時間複雜度,而空間效率 被稱作空間複雜度。 時間複雜度主要衡量的是乙個演算法的執行速度,而空間複雜度主要衡量乙個演算法所需要 的額外空間,在計算機發展的早期,計算機的儲存容量很小。所以對空間複雜度很是在乎。但是經過計算機 行業的迅速發展,計算機的儲存容量已經達到了很高的程度。所以我們如今已經不需要再特別關注乙個演算法 的空間複雜度

1.時間複雜度

時間複雜度的定義:在電腦科學中,演算法的時間複雜度是乙個函式,它定量描述了該演算法的執行時間。一 個演算法執行所耗費的時間,從理論上說,是不能算出來的,只有你把你的程式放在機器上跑起來,才能知 道。但是我們需要每個演算法都上機測試嗎?是可以都上機測試,但是這很麻煩,所以才有了時間複雜度這個 分析方式。由於同一演算法在不同配置的機器上的執行時間可能不同,而乙個演算法所花費的時間與其中語句的執行次數成正比例,演算法中的基本操作的執行次數,為演算法的時間複雜度。

實際中我們計算時間複雜度時,我們其實並不一定要計算精確的執行次數,而只需要大概執行次數,那麼這 裡我們使用大o的漸進表示法。

大o符號(big o notation):是用於描述函式漸進行為的數學符號。

推導大o階方法:

1)、用常數1取代執行時間中的所有加法常數。

2)、在修改後的執行次數函式中,只保留最高端項。

3)、如果最高端項存在且不是1,則去除與這個專案相乘的常數。得到的結果就是大o階。

通過大o的漸進表示法去掉了那些對結果影響不大的項,簡潔明瞭的表示出了執行次數。

另外有些演算法的時間複雜度存在最好、平均和最壞情況:

最壞情況:任意輸入規模的最大執行次數(上界)

平均情況:任意輸入規模的期望執行次數 最好情況:任意輸入規模的最小執行次數(下界)

例如:在乙個長度為n陣列中搜尋乙個資料x 最好情況:1次找到 最壞情況:n次找到

平均情況:n/2次找到

在實際中一般情況關注的是演算法的最壞運**況,所以陣列中搜尋資料時間複雜度為o(n)

2.空間複雜度

空間複雜度是對乙個演算法在執行過程中臨時占用儲存空間大小的量度。空間複雜度不是程式占用了多少 bytes的空間,因為這個也沒太大意義,所以空間複雜度算的是變數的個數,有沒有開闢輔助空間。空間複雜度計算規則基本跟實踐 複雜度類似,也使用大o漸進表示法。

評價乙個演算法的優劣

演算法 把生活中大量且複雜的問題以特定的資料型別和特定的儲存結構儲存到主儲存器中,且在此基礎上為實現某些功能而對此進行的操作。這並不是指所花費的時間,因為在不同的環境下執行程式 也會對時間造成影響,而此處所說的時間複雜程度只是指執行該演算法大概所需要的次數。計算機的記憶體是有限的,而對記憶體使用不當...

如何衡量乙個量化策略的好壞

轉 如何衡量乙個量化策略的好壞?我們認為有三點,一是有比較穩定的收益,二是有嚴謹的回測,三是有清晰的邏輯,這才能算得上乙個好的量化策略。大家可以對照這三條比較一下,如果滿足這三條,我們就稱它是乙個好的量化策略.國泰君安 金融工程領域研究首席分析師劉富兵 量化投資以投資者的智慧型為核心,以計算機為工具...

流量不是衡量優劣的唯一標準

流量大小是衡量 優劣的乙個標準,但不是唯一標準,它相當於現實生活中商業人氣,沒有人氣的商場肯定不會贏利。所以站長們都在程式設計客棧為如何增加流量而苦惱,特別是加大了對垃圾資訊的審核力度,再加上google離開以後,一家獨大,更是沒有把我們這些中小站長放在眼裡,人工k站的事情經常發生。對中小站長而言,...