算法分析與設計 第一章概論練習題


1.【單選題】 (2分)

有時間復雜性img,時間復雜性從低到高的順序是?( )

A.img

B.img

C.img

D.img

答案: C

解析: 常見時間復雜度之間的關系

img

所消耗的時間從小到大:\(O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)\)

2.【單選題】 (2分)

T(n)表示當輸入規模為 n 時的算法效率,以下算法效率最優的是( )。

A.T(n)= T(n-1)+1,T(1)=1 相當於O(N)

B.T(n)= \(2n^2\) 相當於O(N^2)

C.T(n)= T( n/2 )+1,T(1)=1 相當於O(logN)

D.T(n)=\(3nlog_2 n\) 相當於O(NlogN)

答案:C

解析: 7fee55ac198cf3bf5281415cd9fa00b4.png

3.【單選題】 (2分)

算法復雜度分析的兩種方法是( )。

A.最壞情況的復雜度和最好情況的復雜度

B.事前分析和事后統計

C.最壞情況的復雜度和平均復雜度

D.最好情況的復雜度和平均復雜度

答案:B

4.【單選題】 (2分)

下列對算法效率的描述錯誤的是:( )。

A.平均效率是指輸入為n時,算法在隨機獲典型輸入情況的效率。

B.最優效率是指輸入為n時,算法在最優情況的效率。

C.最差效率是指輸入為n時,算法在最壞情況的效率。

D.平均效率是指輸入為n時,算法在最壞情況的效率。

答案:D

5.【單選題】 (2分)

下面列出了算法的四個性質,哪個性質是程序不一定具備的( )?

A.確定性

B.有窮性

C.輸出

D.輸入

答案:B

6.【單選題】 (2分)

下面哪些內容不是算法設計之前要完成的內容? ( )

A.使用何種計算機語言設計程序

B.確定合適的算法策略

C.是求精確解還是近似解

D.確定合適的數據結構

答案:A

7.【單選題】 (2分)

下面那個算法在最壞情況下的時間復雜性最低。( )

A.插入排序

B.歸並排序

C.冒泡排序

D.快速排序

答案:B

解析:img

8.【單選題】 (2分)

描述算法的基本方法有( )。(1)自然語言(2)流程圖(3)偽代碼(4)機器語言

A.(1)(2)(3)(4)

B.(1)(2)(3)

C.(1)(2)(4)

D.(2)(3)(4)

答案:B

9.【單選題】 (2分)

算法設計的基本步驟是( )。(1)選擇數據結構和算法策略(2)算法分析(3)分析求解問題(4)證明算法正確性(5)描述算法

A.(3)(4)(1)(5)(2)

B.(3)(1)(5)(4)(2)

C.(3)(1)(4)(5)(2)

D.(1)(2)(3)(4)(5)

答案:B

10.【單選題】 (2分)

下面程序的時間復雜度為( )

x=1
for i=1 to n
	for j=1 to i
		for k=1 to j
			x++

A.\(n^3\)

B.n

C.\(nlogn\)

D.\(n^2\)

答案:A

11.【單選題】 (2分)

下面說法關於算法與問題的說法正確的是( )。

A.一個問題的同一實例可以有不同的表示形式。

B.操作系統是一個算法。

C.計算機每次求解是針對問題的每個實例求解。

D.給定一個實例,如果一個算法能得到正確解答,稱這個算法解答了該問題。

答案:A

12.【單選題】 (2分)

算法與程序的區別是( )。

A.確定性

B.有窮性

C.輸出

D.輸入

答案:B

13.【單選題】 (2分)

在算法設計與分析過程中,有算法設計,算法的正確性證明,算法的復雜性分析,程序設計等幾個重要步驟,下面哪種順序是正確的?( )

A.算法設計->算法的正確性證明->算法的復雜性分析->程序設計

B.算法的正確性證明->算法設計->算法的復雜性分析->程序設計

C.算法的正確性證明->算法的復雜性分析->算法設計->程序設計

D.算法設計->算法的復雜性分析->算法的正確性證明->程序設計

答案:A

解析:1580539565753815

14.【單選題】 (2分)

算法分析中,算法運行時間的度量單位是:( )。

A.秒

B.基本操作被執行的次數

C.小時

D.分

答案:B

解析:Page7-p2

15.【單選題】 (2分)

下面哪一個不是時間的漸進符號:( )。

A.O

B.Θ

C.Y

D.Ω

答案:C

解析:漸進符號詳解 - Chen洋 - 博客園 (cnblogs.com)

16.【單選題】 (2分)

下列關於計算機算法的描述不正確的是( )。

A.算法是指解決問題的方法或步驟

B.算法是若干指令的有窮序列

C.算法必須要有輸入和輸出

D.算法是編程的思想

答案:C

解析:

  1. 輸入:在算法中可以有零個或者多個輸入

  2. 輸出:在算法中至少有一個或者多個輸出

  3. 有窮行:在執行有限的步驟之后,自動結束不會出現無限循環並且每一個步驟在可接受的時間內完成

  4. 確定性:算法的每一個步驟都具有確定的含義,不會出現二義性

  5. 可行性:算法的每一步都必須是可行的,也就是說,每一步都能夠通過執行有限的次數完成

17.【單選題】 (2分)

算法分析中,"O"表示( )

A.漸進下界

B.漸進上界

C.非緊上界

D.非緊下界

答案:B

18.【判斷題】 (2分)

關於時間復雜度的理解,有人說:時間復雜度高的算法,算法運行速度一定比時間復雜度低的算法慢。( )

答案: 錯誤

19.【判斷題】 (2分)

證明算法不正確,只需給出一個反例,算法不能正確處理即可。( )

答案:正確

20.【判斷題】 (2分)

\(n!=o(2^n)\) ( )

答案:錯誤

21.【判斷題】 (2分)

常數階算法的運行時間與規模n無關。( )

答案: 正確

22.【判斷題】 (2分)

同一數學模型使用不同的數據結構會有不同的算法,有效性有很大差別。( )

答案:正確

23.【判斷題】 (2分)

同一算法只有一種形式描述。( )

答案:錯誤

24.【判斷題】 (2分)

算法的性質中對於輸入的描述是可以有0個或多個外部量作為輸入, 如果是0個,意味着這個算法沒有數據需要加工處理。( )

答案:錯誤

解析:所謂0個輸入是指算法本身定出了初始條件;

25.【判斷題】 (2分)

平均時間復雜性是指算法在最好和最壞情況下的時間復雜性的算術平均值。( )

答案:錯誤

解析:平均時間復雜度也是從概率的角度看,更能反映大多數情況下算法的表現。當然,實際中不可能將所有可能的輸入都運行一遍,因此平均情況通常指的是一種數學期望值,而計算數學期望值則需要對輸入的分布情況進行假設。平均運行時間很難通過分析得到,一般都是通過運行一定數量的實驗數據后估算出來的

26.【判斷題】 (2分)

給定一個實例,如果一個算法能得到正確解答,稱這個算法解答了該問題。( )

答案:錯誤
解析:該問題的所有實例

27.【判斷題】 (2分)

計算機每次求解是針對問題的每個實例求解。( )

答案:錯誤

解析:一個實例

28.【判斷題】 (2分)

一個問題的同一實例可以有不同的表示形式。( )

答案:正確

29.【判斷題】 (2分)

一個問題的算法必須在有窮時間終止,並且對一切合法的輸入都能得出滿足要求的結果。( )

答案:正確

30.【判斷題】 (2分)

時間復雜度是指算法最壞情況下的運行時間。( )

答案:正確

31.【判斷題】 (2分)

\(f(n)=3n^3+7n^2+4nlogn =O(n^2)\)( )

答案:錯誤

32.【判斷題】 (2分)

時間復雜度是指算法最好情況下的運行時間。( )

答案:錯誤

解析:時間復雜度是指算法最壞情況下的運行時間

33.【判斷題】 (2分)

好的算法在很大程度上取決於問題中數據所采用的數據結構。 ( )

答案:正確

34.【判斷題】 (2分)

一個需要指數級操作次數的算法是效率很差的,無用的算法.( )

答案:錯誤

35.【填空題】 (4分)

一個程序應包括對數據的____________和對操作的____________兩個方面的內容。

答案:35.1 描述35.2 描述
解析: 一是對數據的描述。想要使用某個數據,就必須聲明其類型、作用范圍、使用規范、組織形式等,這就是數據的描述。

​ 二是對操作的描述。想要實現什么樣的功能,具體該如何做,數據該如何使用和處理等,這就是對操作的描述。也就是算法。

36.【填空題】 (4分)

算法分析的兩個主要方面是分析算法的____________和____________。

答案:36.1 時間復雜度36.2 空間復雜度

37.【填空題】 (2分)

任何可用計算機求解的問題所需的時間都與其____________有關。

答案:37.1 問題規模

38.【填空題】 (2分)

算法的執行時間主要與___有關。

答案:38.1 問題規模

39.【填空題】 (2分)

一個算法是由控制結構和___構成的。

答案: 39.1 原操作

解析:一個算法是由控制結構和原操作構成的,其執行時間取決於兩者的綜合效果

40.【填空題】 (4分)

算法的復雜性包括( )復雜性和( ) 復雜性。

答案:40.1 時間40.2空間

41.【問答題】 (4分)

算法設計應滿足哪幾條目標?

答案:正確性、可使用性、可讀性、健壯性、高效率低存儲

正確性:算法能夠按照規定的功能和性能正確地執行,這是最基本並且最重要的標准!
可使用性:也叫用戶友好性,算法能夠方便地使用
可讀性:算法是易於理解的,這要求算法在邏輯上是清晰的、結構化的
健壯性:算法具有容錯性,即異常處理,能夠檢測不合理的數據,保證程序不發生異常中斷等
高效率低存儲:效率是指算法的執行時間;存儲是指算法執行所用的最大存儲空間。算法應該在保證前面的條件下,執行時間盡可能低存儲空間盡可能小

42.【問答題】 (4分)

什么是算法?算法有哪些特征?

答案: 算法是求解問題的一系列計算步驟,用來將輸入數據轉換成輸出結果。

P~3算法五大特征:①有限性②確定性③輸入性④輸出性⑤可行性

算法的定義

通常,定義算法為"為解決某一特定任務而規定的一個指令序列"。

算法的5個基本特性

① 有輸入。一個算法必須有0個或多個輸入。它們是算法開始運算前給予算法的量。這些輸入取自於特定的對象的集合。它們可以使用輸入語句由外部提供,也可以使用賦值語句在算法內給定。
② 有輸出。一個算法應有一個或多個輸出,輸出的量是算法計算的結果。
③ 確定性。算法的每一步都應確切地、無歧義地定義。對於每一種情況,需要執行的動作都應嚴格地、清晰地規定。
④ 有窮性。一個算法無論在什么情況下都應在執行有窮步后結束。
⑤ 有效性。算法中每一條運算都必須是足夠基本的。就是說,它們原則上都能精確地執行,甚至人們僅用筆和紙做有限次運算就能完成。

43.【問答題】 (4分)

算法的漸進時間復雜性的含義?

答案:采用漸進符號表示的算法時間復雜度也稱漸進時間復雜度,它反映的是一種增長趨勢

44.【問答題】 (2分)

分析以下算法的時間復雜度?(要求寫出詳細過程)

void fun(int n)
{ int s=0,i,j,k;
 for (i=0;i<=n;i++)
     for (j=0;j<=i;j++)
         for (k=0;k<j;k++)
             s++;
}

答案:

\[\begin{align}\label{2} &f(n) =\sum_{i=0}^n\sum_{j=0}^i\sum_{k=0}^{j-1}1\\ & =\sum_{i=0}^n\sum_{j=0}^i(j-1-0+1)\\ & =\sum_{i=0}^n\sum_{j=0}^ij\\ & =\sum_{i=0}^n\frac{i(i+1)}2\\ & =\frac{1}{2}(\sum_{i=0}^ni^2+\sum_{i=0}^ni)\\ & =\frac{2n^3+6n^2+4n}{12}\\ & =O(n^3)\\ \end{align} \]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM