算法和數據結構是計算機科學的基礎。如果沒有正确的算法和數據結構知識,開發人員将不得不經曆艱難的情況,或者可能會保持業餘水平。基本上,如果你應聘更大的公司,他們肯定會有算法和數據結構方面的面試問題。程序員的藝術是通過正确選擇數據結構來實現最有效的算法。
簡而言之,算法是解決問題的一系列規則,數據結構是你收集和組織數據的地方。無論是數據挖掘、機器學習、人工智能、Web 應用程序還是移動應用程序,你都應該熟悉算法和數據結構。
時間複雜度和運行時間為了了解算法的效率,我們需要熟悉解決特定問題所需的時間。通常,我們使用術語 Big O 表示法來衡量算法的時間複雜度。
所以,讓我們用一些代碼來解釋它:
private void Print(int N){
for(int i=0;i<N;i ){
Console.WriteLine("hello world");
}
}
上面的代碼将打印“hello world”N 次。所以,一般來說,你可以說上面程序的運行時間是 O(N),其中 O 是大 O 表示法。
我們再看一段代碼:
int N = 5;
int count = 0;for (int i = 0; i < N; i )
{
for (int j = 0; j < N; j ){
Console.Write( count);
Console.WriteLine(".hello world");
}
}
上面的代碼會打印 25 次“hello world”,也就是說上面算法的運行時間是 O(N²)。
以下部分描述了運行時間的時間複雜度。
1. 常數
運行時間:O(1)
執行給定操作需要固定數量的步驟。例如,1、5、10 或其他數字,并且此計數不依賴于輸入數據的大小。Dictionary和hashmap是具有恒定時間複雜度的數據結構的示例。
2. 對數
運行時間:O (log(N))
它采用 log(N) 步驟的順序,其中對數的底通常為 2,用于對 N 個元素執行給定的操作。如果 N=1,000,000,複雜度為 O(log(N)) 的算法将執行大約 20 步。
3.線性
運行時間:O(N), O(N*log(N))
對 N 個元素執行操作所需的步數幾乎與元素數相同。如果 N=1,000,000,複雜度為 O(N) 的算法将執行大約 1,000,000 步。
如果 N=1,000,000,複雜度為 O(N*log(N)) 的算法将執行大約 1,000,000 * 20 步。
4.二次方
運行時間:O(N²)
它需要 N 平方步數。
5.立方
運行時間:O(N³)
它需要 N 立方步數。
6:指數
運行時間:O(2^N), O(N!), O(N^N)
它需要幾個步驟,對輸入數據具有指數可靠性。在 N=20 和 O(2^N) 的時間複雜度下,它需要 1,048,576 步。
時間複雜度和執行時間本節根據元素的數量描述時間複雜度及其執行時間。
如果複雜度低,即使對于大量元素,程序也會執行得很快;如果複雜度高,則對于少量元素,程序會執行緩慢甚至挂起。下表顯示了時間複雜度及其執行時間。
了解你正在編寫的程序的時間複雜度非常重要。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!