常見排序演算法的時間複雜度
排序演算法 | 平均時間 | 最差情形 | 穩定度 | 額外空間 | 備註 |
---|---|---|---|---|---|
冒泡 | O(n^2) | O(n^2) | 穩定 | O(1) | n小時較好 |
交換 | O(n^2) | O(n^2) | 不穩定 | O(1) | n小時較好 |
選擇 | O(n^2) | O(n^2) | 不穩定 | O(1) | n小時較好 |
插入 | O(n^2) | O(n^2) | 穩定 | O(1) | 大部分已排序時較好 |
基數 | O(logRB) | O(logRB) | 穩定 | O(n) | n小時較好 |
希爾 | O(nlogn) | O(n^s),s∈(1,2) | 不穩定 | O(1) | s是所選分組 |
快速 | O(nlogn) | O(n^2) | 不穩定 | O(nlogn) | n大時較好 |
歸併 | O(nlogn) | O(nlogn) | 穩定 | O(1) | n大時較好 |
堆 | O(nlogn) | O(nlogn) | 不穩定 | O(1) | n大時較好 |
相關推薦
常見排序演算法時間複雜度及穩定性
排序演算法 平均時間複雜度 最壞時間複雜度 穩定性 選擇排序 O(N²) O(N²) 不穩定 氣泡排序 O(N²
常見排序演算法時間複雜度、空間複雜度、穩定性總結
排序演算法分類 排序演算法比較表格 排序演算法 平均時間複雜度 最壞時間複雜度 空間複雜度 是否穩定 氣泡排序 O(n2) O(n2) O(1) 是 選擇排序 O(n2) O(n2) O
常見排序演算法時間複雜度和空間複雜度表
歸併排序空間複雜度為O(n) 快速排序空間複雜度為O(logn~n):因為快速排序是遞迴的,需要一個棧存放相應的資料,最大遞迴呼叫次數與遞迴樹的深度有關 堆排序空間複雜度在非遞迴情況下是O(1),遞迴情況下就是O(logn)
堆排序優化與幾個排序演算法時間複雜度
我們通常所說的堆是指二叉堆,二叉堆又稱完全二叉樹或者叫近似完全二叉樹。二叉堆又分為最大堆和最小堆。 堆排序(Heapsort)是指利用堆這種資料結構所設計的一種排序演算法,它是選擇排序的一種。可以利用陣列的特點快速定位指定索引的元素。陣列可以根據索引直接獲取元素,時間複雜度為O(1),也就是常量,因此對於取
並行排序演算法——時間複雜度O(n)的排序法
最近老師講了並行的排序演算法,讓我對這個原來不是很瞭解的排序演算法產生了濃厚的興趣。並行排序方法,是指採用平行計算的方法對一組資料進行排序,理論上是在類似內排序的環境下,採用多核並行的方法讓時間降低,排序的複雜度最好的情況下能降低至O(n)左右。 排序的實質
第一篇部落格:對插入排序和歸併排序演算法時間複雜度的學習
第一次寫部落格,心情難免有點忐忑,不過為了達到心中的小目標,儘可能的用有效率的方法去提升自己。廢話不多說,下面進入正題。 剛看了網易公開課裡的《麻省理工學院公開課:演算法導論》,受益頗深!國外學校的講課方式確實更有趣味和深度(或許因為在學校壓根沒聽進去過幾節課)
資料結構和演算法分析之排序篇--歸併排序(Merge Sort)和常用排序演算法時間複雜度比較(附贈記憶方法)
歸併排序的基本思想 歸併排序法是將兩個或以上的有序表合併成一個新的有序表,即把待排序序列分成若干個子序列,每個子序列是有序的。然後再把有序子序列合併為整體有序序列。注意:一定要是有序序列! 歸併排序例項: 合併方法: 設r[i……n]由兩個有序子表r
【PHP-排序演算法】快速排序、堆排序演算法時間複雜度比較
介紹 在以往工作或者面試的時候常會碰到一個問題,如何實現海量TopN,就是在一個非常大的結果集裡面快速找到最大的前10或前100個數,同時要保證記憶體和速度的效率,我們可能第一個想法就是利用排序,然後擷取前10或前100,而排序對於量不是特別大的時候沒有任何問題,但只要
各種排序演算法時間複雜度、穩定性、初始序列是否對元素比較次數有關
怎麼記憶穩定性: 總過四大類排序:插入、選擇、交換、歸併(基數排序暫且不算) 比較高階一點的(時間複雜度低一點得)shell排序,堆排序,快速排序(除了歸併排序)都是不穩定的,在加上低一級的選擇排序是不穩定的。 比較低階一點的(時間複雜度高一點的)插入排序,
(最全)資料結構各排序演算法時間複雜度,空間複雜度,穩定性比較
演算法 時間複雜度 最好 ---------- 平均 --------- 最壞 直接插入排序 o(n)-------- o(n的平方) ---------
常用的八大排序演算法時間複雜度和空間複雜度比較
排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。 各種內部排序按所採用的
排序演算法--時間複雜度(平均時間,最壞情況)、空間複雜度
1、時間複雜度:一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式f(n),演算法的時間量度記作:
常用排序演算法時間複雜度和空間複雜度
摘自維基百科: http://zh.wikipedia.org/wiki/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95#.E7.A8.B3.E5.AE.9A.E6.80.A7 在電腦科學所使用的排序演算法通常被分類為: 計算的時間複雜度(最
演算法導論學習之快排+各種排序演算法時間複雜度總結
快排是一種最常用的排序演算法,因為其平均的時間複雜度是nlgn,並且其中的常數因子比較小。 一.快速排序 快排和合並排序一樣都是基於分治的排序演算法;快排的分治如下: 分解:對區間A[p,r]進行分解,返回q,使得A[p–q-1]都不大
資料結構與演算法--蠻力法之氣泡排序與時間複雜度分析(java)
蠻力法 蠻力法又稱窮舉法和列舉法,是一種簡單直接地解決問題的方法,常常直接基於問題的描述,所以蠻力法也是最容易應用的方法。但是蠻力法所設計的演算法時間特性往往是比較低的,典型的指數時間演算法一般都是通過蠻力
排序演算法之 插入排序、希爾(shell)排序 及其時間複雜度和空間複雜度
有一個已經有序的資料序列,要求在這個已經排好的資料序列中插入一個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法——插入排序插入排序的基本操作就是將一個數據插入到已經排好序的有序資料中,從而得到一個新的、個數加一的有序資料,演算法適用於少
演算法穩定排序和非穩定排序、內排序和外排序、時間複雜度和空間複雜度
轉自:點選開啟連結 1、穩定排序和非穩定排序 簡單地說就是所有相等的數經過某種排序方法後,仍能保持它們在排序之前的相對次序,我們就說這種排序方法是穩定的。反之,就是非穩定的。 比如:一組數排序前是a1,a2,a3,a4,a5,其中a2=a4,經過某種排序後為a1,a2,a4
排序演算法之 歸併排序 及其時間複雜度和空間複雜度
在排序演算法中快速排序的效率是非常高的,但是還有種排序演算法的效率可以與之媲美,那就是歸併排序;歸併排序和快速排序有那麼點異曲同工之妙,快速排序:是先把陣列粗略的排序成兩個子陣列,然後遞迴再粗略分兩個子陣列,直到子數組裡面只有一個元素,那麼就自然排好序了,可
排序演算法之 基數排序 及其時間複雜度和空間複雜度
基數排序(radix sort)屬於“分配式排序”(distribution sort),又稱“桶子法”(bucket sort)或bin sort,顧名思義,它是透過鍵值的部份資訊,將要排序的元素分配至某些“桶”中,藉以達到排序的作用,基數排序法是屬於穩定
[資料結構與演算法]-常見演算法時間複雜度(程式執行時間)計演算法則
本文歡迎轉載,轉載前請聯絡作者,經允許後方可轉載。轉載後請註明出處,謝謝! http://blog.csdn.net/colton_null 作者:喝酒不騎馬 Colton_Null from CSDN 一.引言 演算法(Algorithm)是為求解