牛客網專項練習(二)——20道選擇題

接着來看一些牛客網的專項練習題目,20道選擇題。

 

分析:順序存儲的線性表不但邏輯上連續,物理上也連續,可以使用順序查找法。

鏈式存儲的線性表雖然物理上不一定連續,但邏輯上連續,也可以使用順序查找法。

 

分析:特殊矩陣中如果元素有規律,一般採用數組存儲。而像稀疏矩陣中元素沒有規律的情況下,一般採用三元組或者僞地址表示法。

 

分析:無論採用什麼方式建立單鏈表,都需要掃描這n個元素,邊掃描邊創建單鏈表中的結點並鏈接起來,其時間複雜度爲O(n)。

 

分析:線性結構指的是數據元素之間存在一對一的線性關係,分線性結構中一個結點可能對應多個元素。

常見的線性結構有:線性表、棧、隊列、雙隊列、一維數組、串等。

非線性結構有:樹、圖、多維數組等。

 

分析:

 

分析:

 

分析:見第6題的分析表。

 

分析:

二分查找因爲每次都是從中間點開始查找,所以最壞情況是目標元素存在於最邊緣的情況。
比如1~9,最壞情況就是1或者9,當然4,6這種也算是邊緣(中心的邊緣)。
因爲二分查找每次排除掉一半的不適合值,所以對於n個元素的情況:
一次二分剩下:n/2
兩次二分剩下:n/2/2 = n/4
m次二分剩下:n/(2^m)
在最壞情況下是在排除到只剩下最後一個值之後得到結果,所以爲
n/(2^m)=1;
2^m=n;
所以時間複雜度爲:log(n)

 

分析:在待排序數據大部分已經有序時,用直接插入排序更好。

 

分析:A選項的意思是將s2拼接到s1後面。

 

分析:不穩定的算法有希爾排序、快速排序、選擇排序、堆排序。

 

分析:見第6題的分析表。

 

分析:定義一個數組使用[ ]確定其大小,[ ]中的值須爲定值,define宏定義的值也爲定值,可以用來定義數組。

 

分析:其他的排序時間複雜度在O(n^2),歸併排序無論怎樣時間複雜度還是O(nlog2n)。

 

分析:兩個棧的棧頂,一個在數組第一個元素,朝着數組索引增加方向增加,一個棧頂在數據最後一個元素,朝着數組索引減少方向增加,當兩個棧的棧頂位置相差1時,數組被寫滿。

 

分析:int型元素佔4個字節,100個元素總共是100*4=400。

 

分析:

x(8)=x(6)+x(4)+1  遞歸計算x(8)第一次調用

x(6)=x(4)+x(2)+1  遞歸計算x(6)第二次調用

x(4)= x(2)+x(0)+1  遞歸計算x(4)第三次調用

x(4)= x(2)+x(0)+1   遞歸計算x(4)第四次調用

之後再調用x()計算黑體部分的結果(5次,加上前面4次,一共9次),最後x(8)返回值爲9

接着計算x(9)

x(9)=x(7)+x(5)+1  遞歸計算x(9)第一次調用

x(7)=x(5)+x(3)+1  遞歸計算x(7)第二次調用

x(5)=x(3)+x(1)+1  遞歸計算x(5)第三次調用

x(5)=x(3)+x(1)+1  遞歸計算x(5)第四次調用

之後再調用x()計算黑體部分的結果(5次,加上前面4次,一共9次),最後x(8)返回值爲9

所以總共調用x()的次數是9+9=18

 

分析:這道題題目問的是x(8)需要調用幾次,最後答案應該是A,9次。

以8爲根節點畫出分支樹 8個分支表明調用8次 再加上自身調用x(8)一次 共9次

                                       8

                              6                4

                       4          2      2         0

                 2         0

 

分析:

思想類似於兩端向中間掃描

1、設定兩個指針P1、P2,分別指向數組開始和結尾,即P1指向最小值,P2指向最大值;

2、計算 *P1+*P2 的值爲 SUM,與 sum 比較,記錄它們的差值 DIF 和 SUM,若 SUM<sum,P1++,若SUM>sum,P2--;

3、重複以上過程直到DIF最小。

 

分析:

數組元素在內存中是連續存放,由於每個元素佔用內存相同,可以通過下標迅速訪問數組中任何元素。但是如果要在數組中增加一個元素,需要移動大量元素,在內存中空出一個元素的空間,然後將要增加的元素放在其中。同樣的道理,如果想刪除一個元素,同樣需要移動大量元素去填掉被移動的元素。如果應用需要快速訪問數據,很少或不插入和刪除元素,就應該用數組。

鏈表恰好相反,鏈表中的元素在內存中不是順序存儲的,而是通過存在元素中的指針聯繫到一起。比如:上一個元素有個指針指到下一個元素,以此類推,直到最後一個元素。如果要訪問鏈表中一個元素,需要從第一個元素開始,一直找到需要的元素位置。但是增加和刪除一個元素對於鏈表數據結構就非常簡單了,只要修改元素中的指針就可以了。如果應用需要經常插入和刪除元素就需要用鏈表數據結構了。

 

好了,這次就說到這裏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章