日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

基础数据结构测试

發布時間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基础数据结构测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天晚上考了基礎數據結構,把題拿出來跟大家分享一下,希望對大家有一定的幫助!!!


時間復雜度,即執行了多少次,i是從1到n,j是從n到0,又因為這個是for循環的嵌套,所以正確答案D.O(n^2)

首先來看A 線性表即順序表和鏈表 正確
B 順序表必須占用一塊連續的內存 無論是邏輯上還是物理上都是連續的 正確
C 鏈表沒有明確的規定 所占內存可連續 可不連續 都可以的 錯誤
D 鏈表的實現方式 正確


A.單鏈表要實現尾刪尾插的話,得從頭開始遍歷,那么時間復雜度就是O(n)
B.單循環鏈表比起單鏈表就是多了個指向頭節點的尾指針,然后你要實現尾刪尾插都得從末尾開始操作,但是它是單循環鏈表,只能從尾結點指向頭節點,而不能從頭節點指向尾結點,所以時間復雜度也是O(n)
C.帶尾指針的單循環鏈表 比起B選項多了個尾指針,尾插確實可以省時間,但是尾刪的話,你不能從尾指針往回找找到倒數第二個節點(尾刪得找到倒數第二個節點進行操作),也就是尾插時間復雜度是O(1) 尾刪是O(n)
D.就可以很好的解決前三個選項的問題 時間復雜度嗾使O(1)


A. 單鏈表和上道題一樣的問題,頭刪O(1) 尾插的話得遍歷線性表 時間復雜度O(n)
B. 這個選項和A選項時間復雜度一毛一樣,帶有頭指針的單循環鏈表尾刪不能直接找到最后一個系欸DNA來實現尾插,單循環指的是尾指針指向頭指針 頭刪O(1) 尾插O(n)
C. 雙向鏈表找到最后一個節點還得遍歷一遍 頭刪O(1) 尾插O(n)
D. 尾指針直接找到危機欸但進行尾插O(1) 然后單循環鏈表直接找到頭節點進行頭刪O(1)


ABD對的 沒什么好說的
C的話它其實是寫反了,又因為有下標的幫助,所以尾部操作時間復雜度為O(1) 除了尾部之外的操作 得挪動數據


因為棧的特點是先進后主 FILO(first Input Last Output)
然后A選項的話就是a先進去然后,b再進去再出來,就是每次進去一個然后出來,再進去下一個輸出就是abcd
B選項就是abcd挨個進去,然后再出來就是dcba了 反過來了
C選項就是ab先進去,b出來,然后再重復A選項的操作,輸出就是bcda
D選項的就是b先于a出棧了 因為輸入的是abcd,所以D不可能


因為隊列的特點和棧剛好相反,它的特點是先進先出(FIFO) 然后它的正確輸出是abcd ,然后錯誤的就是BCD


答案在下圖:


這玩意kmp算法中的next數組的求法,就是那個字符串的真子串的個數。
具體求法我在這篇博客中寫到了
:BF算法的優化----KMP算法



相當于給m和n都遍歷了一遍 所以n(n+m)
這個也是kmp算法中的 去看這個就好
:KMP算法


這兩個題沒啥說的,算是常識吧,八大排序中四個穩定四個不穩定
大家可以去看我的數據結構專欄去加深一下印象
:數據結構與算法


對于冒泡排序,直接來看代碼:

void bubbleSort(int *arr,int len)
{for(int i = 0 ; i < len -1 ; i++){for(int j = 0 ; j < len -1 -i ; j++){if(arr[j] > arr[j+1]){int tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}}}
}

上面代碼中只有arr[j] > arr[j+1]的時候,才會進行交換,如果次次都需要交換,那么交換次數等于比較次數,然而大多數情況下都是交換次數小于比較次數,所以B選項正確

再來看選擇排序:選擇排序
鏈接中有明確的動圖來解釋選擇排序中的比較次數和交換次數


這道題就是背吧,面試有時候會考到的


我們來看一下,節點總數是有規律的,就是((2^n)-1),那么我們將n = 6帶進去,答案是63,63 < 100 所以小了,那么將n = 7帶進去,答案是127 > 100,那么深度就是7


數據越亂,使用快速排序越有利,數據要是已經排序好的1 2 3 4 5的話,第一遍得遍歷4次,第二遍三次,兩次,一次,最后總的時間復雜度就是O(n^2),所以數據不是很亂的話,使用快速排序不是很省時間


只想要獲取前幾個最小值,那么大家應該要想到小頂堆,也就是堆排序按照小頂堆來弄,每一次弄出序列中最小的值,就很符合題意,所以選堆排序!
大家可以去看這篇博客的堆排序,講的很詳細:堆排序




照著上圖,可以看出左半邊有6個元素,21下標為6,答案為6,6

這次的考題中主要還是關于鏈表和順序表那塊的考題比較經典,還有就是快排和冒泡排序,這兩很重要,一定得會寫!

“每一個不曾起舞的日子,搜是對生命的辜負!”

總結

以上是生活随笔為你收集整理的基础数据结构测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。