演算法學習(一)面試問題

2021-09-25 06:03:59 字數 1001 閱讀 8505

對一組資料進行排序:

可以用快速排序o(nlogn),但是只能證明會快排,但忽略了使用環境。

(1)所以可以和面試官**:

1、這組資料有什麼樣的特徵,比如是否包含大量重複元素,如果有那麼三路排序更好,如果所有的排序都是獨特的那普通的就好了。(很多語言的標準庫都是三路快排)。

2、是否大部分資料距離他的正確位置很近?是否近乎有序?比如對銀行近期發生的資料進行排序大多數這樣就是近乎有序,處理這樣的資料插入排序更好。

3、是否資料取值範圍有限?比如學生成績排序,這樣計數排序更好。

4、比如是否需要穩定的排序,那麼歸併更好。

5、資料儲存狀況是怎麼樣的?快排依賴於資料的隨機訪問特徵,如果資料是鍊錶儲存的,快排就不適用了,歸併更好。

6、資料大小是否足以儲存在記憶體中?需要使用外排序演算法

(2)正確還包括對問題的獨到見解,優化,**規範,容錯性

不要輕視基礎演算法與資料結構,而只關注有意思的題目

1、各種排序演算法

2、基礎資料結構和演算法的實現:如堆,二叉樹,圖

3、基礎資料結構的使用:如鍊表、棧、佇列、雜湊表、圖、tire、並查集

4、基礎演算法:深度優先、廣度優先、二分查詢、遞迴

5、基本演算法思想:遞迴、分值、回溯搜尋、貪心、動態規劃

解決演算法面試的整體思路

1、注意題目中的條件:給定有序陣列(二分查詢),題目中的暗示設計o(nlogn)的演算法(分治法),資料規模大概10000

2、沒有思路的時候,給自己幾個簡單的測試用例

3、不要忽視暴力解法,通常是思考的起點

4、優化演算法:遍歷常見的演算法思路,遍歷常見的資料結構,空間和時間的交換(雜湊表),預處理資訊(排序),在瓶頸處尋找答案(o(nlogn)+o(n^2) --> o(n^3))

5、編寫實際問題:極端條件判斷(空指標,字串為空,數量為0,指標為null),變數名,模組化,復用性

面試問題(一)

1.string與int之間如何相互轉換?1 intger轉string 方法一 integer類的靜態方法tostring integer a 2 string str integer.tostring a 方法二 integer類的成員方法tostring integer a 2 string ...

面試問題總結(一)

union和union all的區別 union要進行重複值掃瞄,效率比union all要低 union會自動壓縮多個結果集合中的重複結果,而union all則將所有的結果全部顯示出來,不管是不是重複。注意 使用union和union all必須保證各個select 集合的結果有相同個數的列,並...

面試問題 用友一

1.建立索引需要注意的事項。2.這個問題沒有記住 dbus propertes 的作用。3.linux命令 遞迴複製 檔案 cp r 語法 cp 選項 源檔案目錄 目標檔案目錄 選項 f 強制複製,不論目標檔案目錄是否存在。r 遞迴操作,將指定的目錄和目錄下的檔案一併處理。i 覆蓋檔案前,進行詢問,...