牛客網秋招模擬筆試第二場(選擇題)
1、計數排序算法(需要兩個輔助數組存放排序結果的B[1...n],提供臨時存儲區的C[0...k]),輸入數組A[1...n]
輔助數組C的長度,輸入數組的最大數就是輔助數組的長度
計數排序是一種線性排序算法,不用進行比較。基本思想是對於每個元素x,找出比x小的數的個數,從而確定x在排好序的數組中的位置。
圖中,數組A是待排序的數組,C是用來臨時存放信息的數組,B是最終排好序的數組。對於A中的每一個元素,我們將其元素作為C數組的下標。直白的說,如a中,C[0]=2表示A中的元素為0的有兩個,C[1]=0,表示A數組中沒有值為1的元素,以此類推。所以C[i]中存放的是A中i的個數。b圖是對數組前面的數字相加後的結果,如C[2]=4表示,A中小於等於2的元素有4個。以此類推。
得到A和C之後,就可以開始排序了。如A[1]=2,我們由C數組知道,小於等於2的元素有4個,所以排好序的數組中,2應該放在數組的第4位。圖中是從後往前的。比如A[8]=3,由C知道,數組A中小於等於3的元素有7個,因此B[7]=3.以此類推這樣排下去……
【特別註意】由於數組中可能會有相等的元素,因此在排序後,要記得C中對應部分減1
特點1. 提前必須是已知待排序的關鍵字為整型且範圍已知。
2. 時間復雜度為O(n+k),不是基於比較的排序算法,因此效率非常之高且穩定。
3. 穩定性好,這個是計數排序非常重要的特性,可以用在後面介紹的基數排序中。
4. 但需要一些輔助數組,如C[0..k],因此待排序的關鍵字範圍0~k不宜過大。
2、常見排序算法穩定性、時間復雜度比較
3、順序存儲結構
順序表的插入、刪除需移動大量元素O(n);但在尾端插入、刪除效率高O(1)。
- 隨機存取結構:指在一個數據結構上進行查找的時間性能是O(1)。順序表就是一種隨機存取結構。
- 順序存取結構:指在一個數據結構上進行查找的時間性能是O(n)。單鏈表就是一種順序存取結構。
鏈式存儲結構:
(1)占用額外的空間以存儲指針(浪費空間)
(2)存取某個元素速度慢
(3)插入元素和刪除元素速度快
(4)沒有空間限制,存儲元素的個數無上限,基本只與內存空間大小有關.
順序存儲結構:
(1)空間利用率高
(2)存取某個元素速度快
(3)插入元素和刪除元素存在元素移動,速度慢,耗時
(4)有空間限制,當需要存取的元素個數可能多於順序表的元素個數時,會出現"溢出"問題.當元素個數遠少於預先分配的空間時,空間浪費巨大.
在存取元素頻繁,但刪除或插入操作較少的情況宜用順序表.堆排序,二分查找適宜用順序表.
4、數據結構,用篩選法建堆的問題
由無序序列篩選變成有序序列從第 【i/2】(取下界)個開始
5、吞吐率
流水線時間計算公式:一條指令所需時間+(指令條數-1)*時間最長的指令的一段 // 6t+(n-1)3t
吞吐率公式:指令條數 除以 流水線時間
6、關系型數據庫和非關系型數據庫
數據庫 類型 |
特性 | 優點 | 缺點 |
關系型數據庫 SQLite、Oracle、mysql |
1、關系型數據庫,是指采用了關系模型來組織 數據的數據庫; 2、關系型數據庫的最大特點就是事務的一致性; 3、簡單來說,關系模型指的就是二維表格模型, 而一個關系型數據庫就是由二維表及其之間的聯系所組成的一個數據組織。 |
1、容易理解:二維表結構是非常貼近邏輯世界一個概念,關系模型相對網狀、層次等其他模型來說更容易理解; 2、使用方便:通用的SQL語言使得操作關系型數據庫非常方便; 3、易於維護:豐富的完整性(實體完整性、參照完整性和用戶定義的完整性)大大減低了數據冗余和數據不一致的概率; 4、支持SQL,可用於復雜的查詢。 |
1、為了維護一致性所付出的巨大代價就是其讀寫性能比較差; 2、固定的表結構; 3、高並發讀寫需求; 4、海量數據的高效率讀寫; |
非關系型數據庫 MongoDb、redis、HBase |
1、使用鍵值對存儲數據; 2、分布式; 3、一般不支持ACID特性; 4、非關系型數據庫嚴格上不是一種數據庫,應該是一種數據結構化存儲方法的集合。 |
1、無需經過sql層的解析,讀寫性能很高; 2、基於鍵值對,數據沒有耦合性,容易擴展; 3、存儲數據的格式:nosql的存儲格式是key,value形式、文檔形式、圖片形式等等,文檔形式、圖片形式等等,而關系型數據庫則只支持基礎類型。 |
1、不提供sql支持,學習和使用成本較高; 2、無事務處理,附加功能bi和報表等支持也不好; |
註1:數據庫事務必須具備ACID特性,ACID是Atomic原子性,Consistency一致性,Isolation隔離性,Durability持久性。
註2:數據的持久存儲,尤其是海量數據的持久存儲,還是需要一種關系數據庫。
7、先深度後廣度測試技術
牛客網秋招模擬筆試第二場(選擇題)