我會不定期的再這個分組,更新一些我做過的牛客網例題,感謝大家閱讀
題目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)