演算法與資料結構專項練習1

2021-09-18 06:12:15 字數 3150 閱讀 6617

1. 32系統,函式

void func(char str[100]){}

中sizeof(str)=

正確答案: a45

67**解析:**陣列作為引數時,裡的數不起作用,傳遞的是首元素的位址,32位os下是4個位元組,陣列具體有多少個元素,要自己指出,比如void func(char str, int n);

2.對於長度為n的線性表,建立其對應的單鏈表的時間複雜度為()。

正確答案: c

o(1)

o(log2n)

o(n)

o(n^2)

解析:我們使用頭插式或尾插式建立鍊錶都只需要一次迴圈遍歷就可實現,所以時間複雜度為o(n)。

線性表是最基本、最簡單、也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的(注意,這句話只適用大部分線性表,而不是全部。比如,迴圈鍊錶邏輯層次上也是一種線性表(儲存層次上屬於鏈式儲存),但是把最後乙個資料元素的尾指標指向了首位結點)。

鍊錶是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點(鍊錶中每乙個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。 相比於線性表順序結構,鍊錶比較方便插入和刪除操

3.定乙個二維陣列的定義語句為「int a[3][4]=,};」,則元素a[1][2]的值為( )。

正確答案: c24

68解析

定義中每個,表示一行的資料,每行資料不夠的補0,每一行的編號從0開始

4.假設要儲存乙個資料集,資料維持有序,對其的操作只有插入、刪除和順序遍歷,綜合儲存效率和執行速度,下列哪種資料結構是最適合的是?

正確答案: b

陣列鍊錶

雜湊表佇列

解釋

陣列可以實現順序遍歷但是插入刪除操作複雜,平均移動n/2個元素

鍊錶因為儲存的位址不連續(邏輯上連續實際上不連續),可以實現順序遍歷

雜湊表是隨機儲存,所以是離散分布,順序遍歷實現不了

佇列只可以在隊尾插入隊頭刪除,不可以實現中間插入和刪除,不滿足條件

綜上,鍊錶最合適

5.若用陣列s[0. .n-1]做為兩個棧s1和s2的共同儲存結構,對任何乙個棧,只有當s全滿時才不能作入棧操作。為這兩個棧分配空間的最佳方案是( )。

正確答案: a

s1的棧底位置為0,s2的棧底位置為n-1

s1的棧底位置為0,s2的棧底位置為n/2

s1的棧底位置為1,s2的棧底位置為n/2

解釋:兩個棧的棧底乙個在陣列第乙個元素,朝著陣列正方向增長

另乙個在陣列最後乙個元素,朝著陣列索引減小的方向增長。

當兩個棧的棧頂相等是,表明陣列滿了,不能繼續入棧

6.在物件導向的程式設計中,關於陣列,下列說法正確的有

正確答案: b

陣列屬於一種原生類

陣列是一種物件

int number==

陣列的大小可以任意改變

解釋:a.原生類指未被例項化的類,陣列一般指例項化,被分配空間的類,不屬於原生類.

b.物件的特點是封裝了一些資料,同時提供了一些屬性和方法,從這個角度來講,陣列是物件

c.格式有誤

d.陣列的大小確定之後不可改變

7.設 int x=,p=x; 則值為 3 的表示式是

正確答案: b

p+=2,++p;

p+=2,p++

p+=3,p

p+=2,++p

解釋答案為b p=x這裡指標p指向陣列的首元素位址,p+=2則指標指向第三個元素,而++p是前置加加,p先自增,再解引用,就指向第四個元素了 b中為後置加加,是先解引用再加所以不影響,正確, c中p+=3就錯了,因為指向第四個元素了 d中++p,因為p為3,所以就是++3了,結果為4

**8.乙個54的矩陣,有多少個長方形?(正方形也算是長方形)

正確答案: b

120150

10080

解釋

9.若6行5列的陣列以列序為主序順序儲存,基位址為1000,每個元素佔2個儲存單元,則第3行第4列的元素(假定無第0行第0列)的位址是()

正確答案: a

1042

1026

備選答案a,b,c都不對

解釋思路:按列儲存,第一列的基址是:1000,第二列的基址是:1012,第3列是:1024,第4列是:1036,所以第三行第4列為:1036+2+2=1040注:以「列序」為主,默以為以「行序」為主了

10.在乙個元素個數為n的陣列裡,找到公升序排在n/5位置的元素的最優演算法時間複雜度是

正確答案: a

o(n)

o(n log n)

o(n (log n)2)

o(n 3/2)

解釋bfprt演算法解決的問題十分經典,即從某n個元素的序列中選出第k大(第k小)的元素,通過巧妙的分 析,bfprt可以保證在最壞情況下仍為線性時間複雜度。該演算法的思想與快速排序思想相似,當然,為使得演算法在最壞情況下,依然能達到o(n)的時間複雜 度,五位演算法作者做了精妙的處理。

演算法步驟:

將n個元素每5個一組,分成n/5(上界)組。

取出每一組的中位數,任意排序方法,比如插入排序。

遞迴的呼叫selection演算法查詢上一步中所有中位數的中位數,設為x,偶數個中位數的情況下設定為選取中間小的乙個。

用x來分割陣列,設小於等於x的個數為k,大於x的個數即為n-k。

若i==k,返回x;若ik,在大於x的元素中遞迴查詢第i-k小的元素。

終止條件:n=1時,返回的即是i小元素。

演算法與資料結構專項練習3

1.陣列元素的下標值越大,訪問時間越長,這樣的說法正確嗎?正確答案 b 正確不正確 解析 訪問,指讀出,寫入,時間複雜度都是o 1 不是插入和刪除操作 2.有兩個nn的矩陣a和b,想要在pc上按矩陣乘法基本演算法程式設計實現計算ab。假設n較大,本機記憶體也很大,可以存下a b和結果矩陣。那麼,為了...

資料結構與演算法(1)

演算法 資料結構 一 演算法 1.演算法的幾個特徵是什麼。2.演算法複雜性的定義。大o 小o分別表示的含義。3.遞迴演算法的定義 遞迴演算法的兩要素。4.分治演算法的思想,經典的分治演算法 全排列 二分搜尋 歸併排序 快速排序 線性時間選擇 最接近點對問題 5.動態規劃演算法解題框架,動態規劃演算法...

資料結構與演算法(1)

1 線性表 2 棧 3 佇列 4 字串 補充 遞迴 1 樹與二叉樹 2 圖 1 查詢 2 排序 編寫相關演算法 資料結構 入門問題 1.為什麼學習資料結構?1 高階程式設計的理論指導 2 提公升編碼能力 3 面試中經常被問及,看發展潛力 2.有哪些資料結構?2.11線性結構 線性表 棧 佇列 陣列 ...