網易2015校招筆試題

才智咖 人氣:1.8W

①、演算法

網易2015校招筆試題

最壞情況下時間複雜度為O(nlogn)的排序演算法有( )

A:基數排序

B:歸併排序

C:堆排序

D:快速排序

答案:BC

解析:基數排序是考慮多個關鍵字的排序方法,同樣關鍵字內可以選擇任意一種合適的排序,關鍵字之間再次排序,時間複雜度可以寫成O(n*r),其中,n為資料數目,r為基的數目。歸併排序是基於分治策略的方法,其基本點是合併兩個有序的佇列,其最壞,平均和最好的時間複雜度都是 O(nlogn),但是需要一個輔助的空間。堆排序是藉助於堆的排序,利用堆的性質,堆排序最壞,平均和最好時間複雜度都是 O(nlogn)。快速排序也是基於分治策略的'方法,最壞情況的時間複雜度是O(n^2),平均時間和最好時間複雜度是O(nlogn)。

②、資料結構

以下說法正確的有( )

A:在m階B-樹中,所有的非終端節點至少包含m/2個節點

B:若一個葉節點是某二元樹中的中序遍歷的最後一個節點,同時它也是該二元樹前序遍歷的最後一個節點

C:插入排序,堆排序,快速排序演算法中,快速排序的速度是最快的,所需的附加空間也是最少的

D:n個數中已知有k個關鍵字hash值相同,若用線性探測法將他們存入散列表中,至少需要進行k(k+1)/2次探測

答案:B

解析:B-樹是一種多叉平衡查詢樹。一個m階的B樹中,根節點至少有2個孩子;除了根節點和葉子節點外,其他內部節點至少包含⌈ m/2⌉個孩子節點。若考慮根節點可以只有2個孩子,則選項A不正確。二元樹中序遍歷的順序是左子樹-根-右子樹,前序遍歷的順序是根-左子樹-右子樹。若中序遍歷的最後結點是葉結點,則它的父結點是它的前驅遍歷結點,該葉結點是父節點的右孩子;因此在前序遍歷時,該葉節點必然仍然是最後遍歷的。快速排序需要輔助空間,最好和平均情況下的空間複雜度為O(logn)。在雜湊表中存入第一個同義關鍵字後,後面至少連續有k-1個單元為空,故按照線性探測法可以依次存入剩餘的k-1個關鍵字,至少需要1+2+ ...+ k-1= k(k-1)/2 次。