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

2021-09-21 02:25:06 字數 2083 閱讀 6871

1.陣列元素的下標值越大,訪問時間越長,這樣的說法正確嗎?

正確答案: b

正確不正確

解析:訪問,指讀出,寫入,時間複雜度都是o(1),不是插入和刪除操作

2.有兩個nn的矩陣a和b,想要在pc上按矩陣乘法基本演算法程式設計實現計算ab。假設n較大,本機記憶體也很大,可以存下a、b和結果矩陣。那麼,為了計算速度,a和b在記憶體中應該如何儲存(按行存指先儲存第一行,再第二行,直到最後一行;按列存指先儲存第一列,再第二列,直到最後一列)?

正確答案: b

a按行存,b按行存。

a按行存,b按列存。

a按列存,b按行存。

a按列存,b按列存。

解析:3.有n個數存放在一維陣列a[1…n]中,在進行順序查詢時,這n個數的排列有序或無序其平均查詢長度不同。()

正確答案: b

正確錯誤

解析:在等概率下,查詢成功時的平均查詢長度相同,查詢失敗時的平均查詢長度不相同。如果查詢失敗,有序表可以盡早退出,而無序表必須全部遍歷完,所以平均查詢長度不同。例如對於有序表12345,查詢-1時,在遍歷第乙個元素即可退出,而無序表需要將整個表遍歷完。

4.將乙個a[1…100,1…100]的三對角矩陣,按行優先存入一維陣列b[1…298]中,a中元素a6665 (即該元素下標i=66,j=65),在b陣列中的位置k為()供選擇的答案:

正確答案: b

198195

197解析:

這是三角矩陣

****5.下列選項中,能正確定義陣列的語句是( )。

正確答案: b

int num[0..2008];

int num=;

int n = 2008;

int num[n];

#define n 2008;

int num[n];****

解析:d項不對,覺得不是陣列定義有問題,應該是巨集定義後面不需要分號

6.廣義表的取表尾運算,其結果通常是個表,但有時也可是個單元素值()

正確答案: b對錯

解析:表尾是指除去表頭後剩下的元素組成的表,表頭可以為表或單元素值

7.在乙個長為33厘公尺的光滑凹軌上,在第3厘公尺、第6厘公尺、第19厘公尺、第22 厘公尺、第26厘公尺處各有乙個鋼珠,凹軌很細,不能同時通過兩個鋼珠,開始時,鋼珠運動方向是任意的。兩個鋼珠相撞後,以相同速度反向運動。假設所有鋼珠初 始速度為每秒運動1厘公尺,那麼所有鋼珠離開凹軌的最長可能時間是()

正確答案: a

3026

3833

解析:

首先要理解為穿越問題。然後如下分析:

所有球離開的最長時間,就可以等效為最後離開的那個球的時間,也就變成找哪個球離左邊或右邊出口的距離最遠,顯然5個球中,第乙個球離右端出口(33-3)30是距離最遠的,故最後答案是30;

若求最短時間,同上,找每個球離左右出口最小的值中的最大值即可。最後是(33-19)14

8.下面哪幾個語句正確的宣告乙個整型的二維陣列()

正確答案: c d

int a=new int

int b[10][10]=new int

int c=new int[10][10]

int d=new int[10][10]

解析:

定義一維陣列時,必須顯式指明陣列的長度;

定義多維陣列時,其一維陣列的長度必須首先指明,其他維陣列長度可以稍後指定;

採用給定值初始化陣列時,不必指明長度;

「」 是陣列運算子的意思,在宣告乙個陣列時,陣列運算子可以放在資料型別與變數之間,也可以放在變數後。

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

1.32系統,函式 void func char str 100 中sizeof str 正確答案 a45 67 解析 陣列作為引數時,裡的數不起作用,傳遞的是首元素的位址,32位os下是4個位元組,陣列具體有多少個元素,要自己指出,比如void func char str,int n 2.對於長度...

資料結構與演算法 3

非遞迴 o n logn 示例 mergesort 求陣列最小和問題 求陣列中 每個數左側所有比它小的數的和 的和 求降序對問題 陣列中每個數與其右側比它小的數組成的二元組 上題反過來即可 partition過程 給定乙個陣列arr,和乙個整數num,請把小於num的數放在陣列的左邊,大於num的數...

資料結構與演算法練習18

首先判斷字串如果長度為0或1就直接返回它的長度。然後用head指向每次子串的首位置,rear指向末位置的下乙個位置,子串的長度就是rear head。雙層for迴圈,外迴圈 i 遍歷1到s.length,內迴圈 j 判斷當前位置 i 是否等於head到rear間的乙個字元,如果相等,就令head j...