牛客網-題目分享(3)

我會不定期的再這個分組,更新一些我做過的牛客網例題,感謝大家閱讀

題目1:

下列關於棧的敘述正確的是(  )。正確答案: 棧按“先進後出”組織數據    

棧按“先進先出”組織數據         棧按“先進後出”組織數據     、

只能在棧底插入數據              不能刪除數據

解析:

棧只能在棧頂插入和刪除數據。

隊列只能在隊尾插入數據,在隊首刪除數據

題目2:

以下排序中時間複雜度最差的是(選擇排序)。

歸併排序      選擇排序    希爾排序    堆排序

解析:

排序方法 平均時間 最好時間 最壞時間
桶排序(不穩定) O(n) O(n) O(n)
基數排序(穩定) O(n) O(n) O(n)
歸併排序(穩定) O(nlogn) O(nlogn) O(nlogn)
快速排序(不穩定) O(nlogn) O(nlogn) O(n^2)
堆排序(不穩定) O(nlogn) O(nlogn) O(nlogn)
希爾排序(不穩定) O(n^1.25)    
冒泡排序(穩定) O(n^2) O(n) O(n^2)
選擇排序(不穩定) O(n^2) O(n^2) O(n^2)
直接插入排序(穩定) O(n^2) O(n) O(n^2)

題目3:

下列排序方法中,最壞情況下比較次數最少的是(  )。正確答案: 堆排序

冒泡排序    簡單選擇排序

直接插入排序    堆排序

解析:

A:冒泡排序最壞情況時間複雜度O(n^2)

B:簡單選擇排序最壞情況時間複雜度爲O(n^2),時間複雜度和冒泡排序一樣,但略優於冒泡排序

C:直接插入排序最壞情況時間複雜度爲O(n^2),和A、B時間複雜度一樣,但是性能優於A、B

D:堆排序最壞情況下時間複雜度爲nlogn

題目4:

下列哪些不是線性表?正確答案: 關聯數組

隊列    棧   關聯數組   鏈表

解析:

1. 隊列(Queue)是隻允許在一端進行插入,而在另一端進行刪除的運算受限的線性表;

2. 棧(stack)在計算機科學中是限定僅在棧頂進行插入或刪除操作的線性表。

3. “關聯數組”是一種具有特殊索引方式的數組。不僅可以通過整數來索引它,還可以使用字符串或者其他類型的值(除了NULL)來索引它。

關聯數組和數組類似,由以名稱作爲鍵的字段和方法組成。 它包含標量數據,可用索引值來單獨選擇這些數據,和數組不同的是, 關聯數組的索引值不是非負的整數而是任意的標量。這些標量稱爲Keys,可以在以後用於檢索數組中的數值。

關聯數組的元素沒有特定的順序,你可以把它們想象爲一組卡片。每張卡片上半部分是索引而下半部分是數值。

4. 鏈表(Linked list)是一種常見的基礎數據結構,是一種線性表,是一種物理存儲單元上非連續、非順序的存儲結構。

題目5:

判定一個順序棧 st (最多元素爲 MaxSize )爲空的條件是 正確答案: st->top == -1

st->top != -1           st->top == -1           st->top != MaxSize           st->top == MaxSize

解析:

s->top 是棧頂指針,空棧爲-1 . 插入元素 s->top++ 出棧 s->top-- 棧滿 s->top = maxSize-1

題目6:

集合與線性表的區別在於是否按關鍵字排序()  正確答案: 錯

對     錯

解析:

線性表可以是有序的,也可以是無序的

集合與線性表的區別是是否允許元素重複

集合不允許元素重複,線性表允許元素重複

題目7:

設順序表的長度爲 n 。下列排序方法中,最壞情況下比較次數小於 n(n-1)/2 的是( )。正確答案: A  堆排序

堆排序      快速排序      簡單插入排序     冒泡排序

解析:

堆排的最好、最壞、平均時間複雜度均爲O(nlog2n); 

快排最壞時間複雜度爲O(n^2),發生在快排Partition函數不平衡劃分的情況下;

簡單插入排序最壞時間複雜度爲O(n^2),發生條件:逆序;

冒泡排序最壞時間複雜度爲O(n^2),發生條件:逆序;

題目8:

若一個廣義表的表頭爲空表,則此廣義表亦爲空表()     正確答案: 錯

對    錯

解析:

知識點盲點:

廣義表( Lists ,又稱列表)  是線性表的推廣。線性表定義爲   n>=0  個元素   a1,a2,a3,…,an  的有限序列。線性表的元素僅限於原子項,原子是作爲結構上不可分割的成分,它可以是一個數或一個結構,若放鬆對錶元素的這種限制,容許它們具有其自身結構,這樣就產生了廣義表的概念

廣義表的表頭爲空,並不代表該廣義表爲空表
例如
廣義表()和(())不同。前者是長度爲0的空表,對其不能做求表頭和表尾的運算;而後者是長度爲l的非空表(只不過該表中惟一的一個元素是空表),對其可進行分解,得到的表頭和表尾均是空表()

廣義表Ls(()); Ls 的元素爲1,head(Ls)爲空,但是Ls不爲空。

廣義表Ls1();表示Ls1爲空表。

題目9:

數組A中,每個元素的長度爲3個字節,行下標i從1到8,列下標j從1到10,從首地址SA開始連續存放在存儲器內,該數組按行存放時,元素A[8][5]的起始地址爲( )。   正確答案: SA+222

SA+141   SA+144    SA+222    SA+225

解析:

首先,本題的數組是從A[1][1]開始的,也就是說和所謂的數組從零開始沒什麼關係。

A[1][1]的起始地址爲SA,那麼A[1][2]爲SA+3.....A[2][1]爲SA+3*10.....A[i][j]爲SA+((i-1)*10+(j-1))*3。

那麼A[8][5]的起始地址就是SA+ (7*10+4)*3=SA+222.

題目10:

以下哪種排序算法平均時間複雜度最低()  正確答案: 歸併排序

冒泡排序   插入排序    歸併排序   選擇排序

解析:

歸併排序的平均時間複雜度爲O(nlogn), 其他三個排序的平均時間複雜度爲O(n^2)

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