什麼是數據結構?
常用的有哪些數據結構?
什麼是算法?
怎樣是評價一個算法的好壞?
2、實現算法所使用的計算機語言。實現算法的語言級別越高,其執行效率相對越低。
3、所使用的語言的編譯器/解釋器。一般而言,編譯的執行效率高於解釋,但解釋具有更大的靈活性。
4、所使用的操作系統軟件。操作系統的功能主要是管理計算機系統的軟件和硬件資源,爲計算機用戶方便使用計算機提供一個接口。各種語言處理程序如編譯程序、解釋程序等和應用程序都在操作系統的控制下運行。
評價運行時間就是一個算法時間複雜度, 一個算法的時間複雜度(Time Complexity)是指該算法的運行時間與問題規模的對應關係。
算法中的基本操作一般是指算法中最深層循環內的語句,因此,算法中基本操作語句的頻度是問題規模n的某個函數f(n),記作:T(n)=O(f(n))。其中“O”表示隨問題規模n的增大,算法執行時間的增長率和f(n)的增長率相同,或者說,用“O”符號表示數量級的概念。 這些 都只是一些理論的概念,我們這裏用計時器來證明這個理論概念。
如:
①x=n; /*n>1*/
y=0;
while(y < x)
{
y=y+1; ①
}
從理論上分析這是一重循環的程序,while 循環的循環次數爲 n,所以,該程序段中語句①的頻度是 n,則程序段的時間複雜度是 T(n)=O(n) 。
評價運行時間就是一個算法時間複雜度, 一個算法的時間複雜度(Time Complexity)是指該算法的運行時間與問題規模的對應關係。
算法中的基本操作一般是指算法中最深層循環內的語句,因此,算法中基本操作語句的頻度是問題規模n的某個函數f(n),記作:T(n)=O(f(n))。其中“O”表示隨問題規模n的增大,算法執行時間的增長率和f(n)的增長率相同,或者說,用“O”符號表示數量級的概念。 這些 都只是一些理論的概念,我們這裏用計時器來證明這個理論概念。
如:
①x=n; /*n>1*/
y=0;
while(y < x)
{
y=y+1; ①
}
從理論上分析這是一重循環的程序,while 循環的循環次數爲 n,所以,該程序段中語句①的頻度是 n,則程序段的時間複雜度是 T(n)=O(n) 。
由此證明,其中算法的時間複雜度確實是接近於O(n²)
③x=n; /*n>1*/
y=0;
while(x >= (y+1)*(y+1))
{
y=y+1; ①
}
這是一重循環的程序,while 循環的循環次數爲 n,所以,該程序段中語句①的頻度是 n,則程序段的時間複雜度是 T(n)=O(√n) 。