1、假設乙個大小為100億個資料的陣列,該陣列是從小到大排好序的,現在該陣列分成若干段,每個段的資料長度小於20「也就是說:題目並沒有說每段資料的size 相同,只是說每個段的 size < 20 而已」,然後將每段的資料進行亂序(即:段內資料亂序),形成乙個新陣列。請寫乙個演算法,將所有資料從小到大進行排序,並說明時間複雜度。
題目就是這樣子的。我當時寫的方法是如果小段資料內部的最大元素和最小元素的差值提前知道不會超過100的話,【100>20*log20,因為20*log20是對陣列排序的時間複雜度】那麼把小段資料的大小減去最小元素,然後放到乙個長度為100的陣列中。然後把元素按100長陣列的順序取出來,再加上最小元素的大小,就是排序之後的位置。如果元素有重複,可以再開乙個長100的陣列記錄元素出現的次數。
這個方法的好處是需要o(100)*2的時間複雜度。需要o(100)的空間複雜度。相比排序之下,這個複雜度好像有點高。
看到網上有乙個其他人的解法:維護乙個20的小根堆,每次從中拿出最小的元素,然後加入乙個新元素。每次加入新元素的調整堆的時間複雜度為o(log20)。
上面網友的這個演算法,是乙個排序的思想,每個元素的調整不超過o(log20)。那麼整體的時間複雜度為n*o(log20)。這個方法很好。
2、http協議是工作在應用層的協議。
資料鏈路層 atm,stp,vtp,vlan ppp
網路層 ,ipv6 ipx,ospf,eigrp rip
傳輸層 ,udp tcp
應用層 wins http ,ftp telnet,tftp,dns
同時分辨一下arp協議。arp報文是由乙太網幀進行封裝傳輸的。沒有封裝進ip包。所以arp協議是工作在資料鏈路層的。tcp/ip模型中,將arp協議放在網路層,而osi七層協議裡剛將其看作資料鏈路層裡的協議
百度運維筆試題整理
從網上找到的一些題 一 32道選擇題 有很多linux知識,比如shell指令碼。通訊網知識,計算機基礎,c知識。二 填空 18分 1 二分查詢的非遞迴演算法 2 資源互斥 程序共享,pv操作 3 子網劃分 三 簡答 10分 各寫出乙個使用tcp udp的高層協議 解釋tcp滑動視窗協議 提出遠距離...
百度筆試題
一 選擇題 15分 共10題 1.在排序方法中,關鍵碼比較次數與記錄地初始排列無關的是 a.shell排序 b.歸併排序 c.直接插入排序 d.選擇排序 2.以下多執行緒對int型變數x的操作,哪幾個需要進行同步 a.x y b.x c.x d.x 1 3.void func 中,變數val的記憶體...
百度筆試題
一 選擇題 15分 共10題 1.已知乙個線性表 38,25,74,63,52,48 採用的雜湊函式為hash key key mod 7,將元素雜湊到表長為7的雜湊表中儲存。請選擇後面兩種衝突解決方法分別應用在該雜湊表上進行等概率成功查詢的平均查詢長度,拉鍊法 線性探測法 a.1.0 b.1.5 ...