1. 程式人生 > >五分鐘學演算法之經典演算法題 :排序演算法(某東演算法工程師比賽)

五分鐘學演算法之經典演算法題 :排序演算法(某東演算法工程師比賽)

題目描述

已知資料表 A 中每個元素距其最終位置 不遠 ,為了節省時間,應該採取的演算法是()

A、直接選擇排序

B、直接插入排序

C、堆排序

D、快速排序

題目分析

我們在之前學習 希爾排序 演算法的時候提及到,希爾排序進行到一定階段(每個元素距離其最終位置不遠時)一般都使用 插入排序 來收尾。

如果知道這個很容易知道答案選 B 。

我們也可以通過分析這四個選項的時間複雜度來做判斷。

選擇排序:對於 n 個元素,每次都需要遍歷 n 次(與元素偏移位置沒有什麼關係),時間複雜度為 O(n2)

插入排序:對於 n 個元素,如果每個元素距離其最終位置平均偏移 c 個單位,則每次比較 c 次,一共比較 n 趟,時間複雜度為 O(cn)。

堆排序:對於 n 個元素,使用堆排序無論元素的位置如何排放時間複雜度都是 O(nlog(n))。

快速排序:對於 n 個元素,即使每次選定的標定點很合適,它的最好時間複雜度也是 O(nlog(n))。

當然,如果你熟悉它們的最好情況下的時間複雜度也是能立馬得出答案的。

更多內容

你可以在電腦端訪問我的個人部落格下的專題 經典演算法題 來閱讀更多相關的面試題。

專題地址:https://www.cxyxiaowu.com/jingdiansuanf