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

歡迎訪問(wèn) 默认站点!

默认站点

當(dāng)前位置: 首頁(yè) >

基础数据结构测试

發(fā)布時(shí)間:2023/11/27 25 豆豆
默认站点 收集整理的這篇文章主要介紹了 基础数据结构测试 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天晚上考了基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),把題拿出來(lái)跟大家分享一下,希望對(duì)大家有一定的幫助!!!


時(shí)間復(fù)雜度,即執(zhí)行了多少次,i是從1到n,j是從n到0,又因?yàn)檫@個(gè)是for循環(huán)的嵌套,所以正確答案D.O(n^2)

首先來(lái)看A 線性表即順序表和鏈表 正確
B 順序表必須占用一塊連續(xù)的內(nèi)存 無(wú)論是邏輯上還是物理上都是連續(xù)的 正確
C 鏈表沒(méi)有明確的規(guī)定 所占內(nèi)存可連續(xù) 可不連續(xù) 都可以的 錯(cuò)誤
D 鏈表的實(shí)現(xiàn)方式 正確


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


A. 單鏈表和上道題一樣的問(wèn)題,頭刪O(1) 尾插的話得遍歷線性表 時(shí)間復(fù)雜度O(n)
B. 這個(gè)選項(xiàng)和A選項(xiàng)時(shí)間復(fù)雜度一毛一樣,帶有頭指針的單循環(huán)鏈表尾刪不能直接找到最后一個(gè)系欸DNA來(lái)實(shí)現(xiàn)尾插,單循環(huán)指的是尾指針指向頭指針 頭刪O(1) 尾插O(n)
C. 雙向鏈表找到最后一個(gè)節(jié)點(diǎn)還得遍歷一遍 頭刪O(1) 尾插O(n)
D. 尾指針直接找到危機(jī)欸但進(jìn)行尾插O(1) 然后單循環(huán)鏈表直接找到頭節(jié)點(diǎn)進(jìn)行頭刪O(1)


ABD對(duì)的 沒(méi)什么好說(shuō)的
C的話它其實(shí)是寫(xiě)反了,又因?yàn)橛邢聵?biāo)的幫助,所以尾部操作時(shí)間復(fù)雜度為O(1) 除了尾部之外的操作 得挪動(dòng)數(shù)據(jù)


因?yàn)闂5奶攸c(diǎn)是先進(jìn)后主 FILO(first Input Last Output)
然后A選項(xiàng)的話就是a先進(jìn)去然后,b再進(jìn)去再出來(lái),就是每次進(jìn)去一個(gè)然后出來(lái),再進(jìn)去下一個(gè)輸出就是abcd
B選項(xiàng)就是abcd挨個(gè)進(jìn)去,然后再出來(lái)就是dcba了 反過(guò)來(lái)了
C選項(xiàng)就是ab先進(jìn)去,b出來(lái),然后再重復(fù)A選項(xiàng)的操作,輸出就是bcda
D選項(xiàng)的就是b先于a出棧了 因?yàn)檩斎氲氖莂bcd,所以D不可能


因?yàn)殛?duì)列的特點(diǎn)和棧剛好相反,它的特點(diǎn)是先進(jìn)先出(FIFO) 然后它的正確輸出是abcd ,然后錯(cuò)誤的就是BCD


答案在下圖:


這玩意kmp算法中的next數(shù)組的求法,就是那個(gè)字符串的真子串的個(gè)數(shù)。
具體求法我在這篇博客中寫(xiě)到了
:BF算法的優(yōu)化----KMP算法



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


這兩個(gè)題沒(méi)啥說(shuō)的,算是常識(shí)吧,八大排序中四個(gè)穩(wěn)定四個(gè)不穩(wěn)定
大家可以去看我的數(shù)據(jù)結(jié)構(gòu)專(zhuān)欄去加深一下印象
:數(shù)據(jù)結(jié)構(gòu)與算法


對(duì)于冒泡排序,直接來(lái)看代碼:

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]的時(shí)候,才會(huì)進(jìn)行交換,如果次次都需要交換,那么交換次數(shù)等于比較次數(shù),然而大多數(shù)情況下都是交換次數(shù)小于比較次數(shù),所以B選項(xiàng)正確

再來(lái)看選擇排序:選擇排序
鏈接中有明確的動(dòng)圖來(lái)解釋選擇排序中的比較次數(shù)和交換次數(shù)


這道題就是背吧,面試有時(shí)候會(huì)考到的


我們來(lái)看一下,節(jié)點(diǎn)總數(shù)是有規(guī)律的,就是((2^n)-1),那么我們將n = 6帶進(jìn)去,答案是63,63 < 100 所以小了,那么將n = 7帶進(jìn)去,答案是127 > 100,那么深度就是7


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


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




照著上圖,可以看出左半邊有6個(gè)元素,21下標(biāo)為6,答案為6,6

這次的考題中主要還是關(guān)于鏈表和順序表那塊的考題比較經(jīng)典,還有就是快排和冒泡排序,這兩很重要,一定得會(huì)寫(xiě)!

“每一個(gè)不曾起舞的日子,搜是對(duì)生命的辜負(fù)!”

總結(jié)

以上是默认站点為你收集整理的基础数据结构测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得默认站点網(wǎng)站內(nèi)容還不錯(cuò),歡迎將默认站点推薦給好友。