排序演算法在面試過程中是面試官常常詢問的知識點。掌握經典排序演算法的基本原理以及其應用場景是十分必要的。(下面將分別進行說明)關於排序演算法基本原理的詳細介紹在其他博文已更新,可通過以下鏈結進行訪問。
1.氣泡排序
2.選擇排序
3.直接插入排序
4.快速排序
5.堆排序
6.shell排序(希爾排序)
7.歸併排序
8.基數排序
如果n較小(n <= 50),可採用直接插入排序或者選擇排序。
如果序列初始狀態基本有序,則可以使用直接插入(越有序越快)、氣泡排序或者隨機的快速排序。
如果n較大,則應該使用時間複雜度為o(nlog 2n)的排序演算法,比如快速排序、堆排序或者是歸併排序。
快速排序是目前內部排序中被公認為最好的方法,當待排序列的關鍵字是隨機分布時,快速排序的平均時間最短。c++11泛型演算法sort()函式的實現就是通過快速排序實現的。
堆排序所需要的輔助空間少於快速排序,並且堆排序不會出現快速排序中可能出現的最壞情況。快速排序和堆排序都不是不穩定的排序演算法。
基數排序是一種穩定的排序演算法,但其是通過單個記錄進行兩兩歸併的。因此在使用時通常不是單獨的使用,而是將直接插入排序結合在一起使用。先使用直接插入排序獲得較長的子檔案,再通過歸併排序兩兩歸併。由於直接插入排序是有序的,因此改進後的歸併排序仍然是有序的。
Flink基本原理及應用場景
flink spark streaming storm storm trient都可以進行實時計算,但各有特點。在大資料處理領域,批處理任務和流處理任務一般被認為是兩種不同的任務,乙個大資料框架一般會被設計為只能處理其中一種任務 例如storm只支援流處理任務,而mapreduce spark只支援...
Zookeeper基本原理與應用場景
zookeeper是乙個針對大型分布式系統的可靠協調系統。提供的功能包括 配置維護 名字服務 分布式同步 組服務等。目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效 功能穩定的系統提供給使用者。zookeeper已經成為hadoop生態系統中的基礎元件。zookeeper有如下特點 最...
RabbitMQ的應用場景 基本原理介紹
訂單系統和庫存系統高耦合.引入訊息佇列 訂單系統 使用者下單後,訂單系統完成持久化處理,將訊息寫入訊息佇列,返回使用者訂單下單成功。庫存系統 訂閱下單的訊息,獲取下單訊息,進行庫操作。就算庫存系統出現故障,訊息佇列也能保證訊息的可靠投遞,不會導致訊息丟失 馬雲這下高興了 佇列和交換機有乙個建立時候指...