2010-10-25 151 views
3

我在學習算法,需要你們幫助我。如果我的問題不明確,我是一個初學者,所以請原諒我。當我在學習的時候,我看到了像NlogN,N^2等類似的東西。幫助學習算法基礎知識

當涉及到使用這些符號檢查不同算法的效率/性能時,我並不十分清楚它的含義。我非常瞭解對數,但它們在檢查算法性能方面的使用方式讓我很生氣。

我在問,如果有人能指點我一個教程,在這個教程裏已經解釋了這些符號,這樣我就可以很好地理解基礎知識。我真的很想了解他們,並且願意學習。

感謝您的幫助。

Kap。

+0

請參閱http://stackoverflow.com/questions/133008/what-is-big-o-notation-do-you-use-it – Roalt 2010-10-25 20:36:20

回答

1

這些只是功能,接收輸入的項目數,並返回需要多少操作完成的算法(通常他們返回算法的限制因素,而不是一個具體的功能..更多的 - here)。

+0

感謝您的回覆。我很感激。 – Kap 2010-10-25 20:38:29

2

購買Introduction to Algorithms。您可以以實惠的價格獲得二手版本。

和/或查看這些來自MIT的great online video lectures圍繞上述書建立。

通過查看這些演講,你就會明白一些算法是如何具有對數時間複雜度,而有些人指數等

+0

+1您閱讀了我的想法 – 2010-10-25 20:30:32

4

你所描述什麼叫big O notationHere是解釋它的指南。

重要的是要注意的是,符號忽略了無關緊要的術語。如果你的算法需要6X^2 + 3X + 12秒來執行,其中X是正在處理的數據點的數量,所以稱它爲O(X^2),因爲當X變大時,6並沒有真正的區別,也不會是3,也不是12。

+0

由父母提供的美妙鏈接。記住排序算法:如何排序無序集?如果你做得不太聰明,你最終會得到O(n^2),並且有更復雜的算法,你可以在O(log n)中做到這一點。 – Roalt 2010-10-25 20:34:29

0

你在談論Big-O符號。這種符號是一種描述算法的最壞可能運行時間作爲其輸入大小的函數的方式。 (n^2)表示如果輸入的大小爲n(例如其中包含n個元素的列表),則該算法將需要n^2次通過以在最壞情況下執行情景(Big-O是最糟糕的情況;對於最好的情況和平均情況,還有其他符號)。如果您有一個for循環嵌套在另一個循環中,則可能會發生這種情況,並且兩者都從1運行到n

O(nlogn)是相似的。它通常發生在遍歷樹結構時(如二叉樹)。

請注意,您可能永遠不會看到像O(3n)這樣的東西,因爲對於非常大的n值,常量3並不重要,所以它將被簡化爲O(n)。

許多其他人已經發布了很好的鏈接閱讀。