1. 程式人生 > >常用的排序/查詢演算法的時間複雜度和空間複雜度

常用的排序/查詢演算法的時間複雜度和空間複雜度

常用的排序演算法的時間複雜度和空間複雜度

排序法

最差時間分析

平均時間複雜度

穩定度

空間複雜度

氣泡排序

O(n2)

O(n2)

穩定

O(1)

插入排序

O(n2)

O(n2)

穩定

O(1)

選擇排序

O(n2)

O(n2)

穩定

O(1)

二叉樹排序

O(n2)

O(n*log2n)

不一頂

O(n)

快速排序

O(n2)

O(n*log2n)

不穩定

O(log2n)~O(n)

堆排序

O(n*log2n)

O(n*log2n)

不穩定

O(1)

希爾排序

O

O

不穩定

O(1)

查詢演算法時間複雜度

查詢

平均時間複雜度

查詢條件

演算法描述

順序查詢

O(n)

無序或有序佇列

按順序比較每個元素,直到找到關鍵字為止

二分查詢(折半查詢)

O(logn)

有序陣列

查詢過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。 如果在某一步驟陣列為空,則代表找不到。

二叉排序樹查詢

O(logn)

二叉排序樹

在二叉查詢樹b

中查詢x的過程為:

1. 若b是空樹,則搜尋失敗

2. 若x等於b的根節點的資料域之值,則查詢成功;

3. 若x小於b的根節點的資料域之值,則搜尋左子樹

4. 查詢右子樹。

雜湊表法(散列表)

O(1)

先建立雜湊表(散列表)

根據鍵值方式(Key value)進行查詢,通過雜湊函式,定位資料元素。

分塊查詢

O(logn)

無序或有序佇列

將n個數據元素"按塊有序"劃分為m塊(m ≤ n)。

每一塊中的結點不必有序,但塊與塊之間必須"按塊有序";即第1塊中任一元素的關鍵字都必須小於第2塊中任一元素的關鍵字;而第2塊中任一元素又都必須小於第3塊中的任一元素,……。然後使用二分查詢及順序查詢。


相關推薦

常用排序/查詢演算法時間複雜空間複雜

常用的排序演算法的時間複雜度和空間複雜度 排序法 最差時間分析 平均時間複雜度 穩定度 空間複雜度 氣泡排序 O(n2) O(n2) 穩定 O(1) 插入排序 O(n2) O(n2) 穩定 O(1) 選擇排序

資料結構(排序演算法查詢演算法時間複雜空間複雜

這是從大神給多的網站上找到的演算法的時間複雜度趨勢和各個常用結構的複雜度截圖。     演算法的時間複雜度,用來度量演算法的執行時間,記作: T(n) = O(f(n))。它表示隨著 輸入大小n 的增大,演算法執行需要的時間的增長速度可以用 f(n) 來描

常用排序演算法時間複雜空間複雜及特點

一、常用排序演算法的時間複雜度和空間複雜度表格 二、特點 1.歸併排序: (1)n大時好,歸併比較佔用記憶體,記憶體隨n的增大而增大,但卻是效率高且穩定的排序演算法。 (2)歸併排序每次遞迴都要用到一個輔助表,長度與待排序的表長度相同,雖然遞迴次數是O(log2n),但每次

常用排序演算法中的時間複雜空間複雜

排序法 最差時間分析 平均時間複雜度 穩定度 空間複雜度 氣泡排序 O(n2) O(n2) 穩定 O(1) 快速排序 O(n2) O(n*log2n) 不穩定 O(log2n)~O(n) 選擇排序 O(n2) O(n2) 不穩定

常用的八大排序演算法時間複雜空間複雜比較

    排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。     各種內部排序按所採用的

常用排序演算法時間複雜空間複雜

排序法 最差時間分析 平均時間複雜度 穩定度 空間複雜度 氣泡排序 O(n2) O(n2) 穩定 O(1) 快速排序 O(n2) O(n*log2n) 不穩定 O(log2n)~O(n) 選擇排序 O(n2) O(n2) 穩定 O(1) 二叉樹排序 O(n2) O(n*log2

常用幾種排序演算法時間複雜空間複雜

 常用的排序演算法的時間複雜度和空間複雜度 排序法  最差時間分析 平均時間複雜度  穩定度  空間複雜度  氣泡排序 O(n2) O(n2)  穩定  O(

常用排序演算法時間複雜空間複雜

摘自維基百科: 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 在電腦科學所使用的排序演算法通常被分類為: 計算的時間複雜度(最

常用排序演算法時間複雜空間複雜

總結: (1)當排序記錄個數n較大,關鍵碼分佈較隨機,且對穩定性不作要求時,採用快速排序為宜。 (2)當待排序記錄個數n較大,記憶體空間允許,且要求穩定排序時,採用歸併排序。 (3)當待排序記錄個數n較大,關鍵碼分佈可能出現正序或逆序的情況,且對穩定性

排序演算法之 插入排序、希爾(shell)排序 及其時間複雜空間複雜

        有一個已經有序的資料序列,要求在這個已經排好的資料序列中插入一個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法——插入排序插入排序的基本操作就是將一個數據插入到已經排好序的有序資料中,從而得到一個新的、個數加一的有序資料,演算法適用於少

常見排序演算法及對應的時間複雜空間複雜

轉載請註明出處: 排序演算法經過了很長時間的演變,產生了很多種不同的方法。對於初學者來說,對它們進行整理便於理解記憶顯得很重要。每種演算法都有它特定的使用場合,很難通用。因此,我們很有必要對所有常見的排序演算法進行歸納。 排序大的分類可以分為兩種:內

演算法穩定排序非穩定排序、內排序排序時間複雜空間複雜

轉自:點選開啟連結 1、穩定排序和非穩定排序 簡單地說就是所有相等的數經過某種排序方法後,仍能保持它們在排序之前的相對次序,我們就說這種排序方法是穩定的。反之,就是非穩定的。 比如:一組數排序前是a1,a2,a3,a4,a5,其中a2=a4,經過某種排序後為a1,a2,a4

排序演算法之 歸併排序 及其時間複雜空間複雜

        在排序演算法中快速排序的效率是非常高的,但是還有種排序演算法的效率可以與之媲美,那就是歸併排序;歸併排序和快速排序有那麼點異曲同工之妙,快速排序:是先把陣列粗略的排序成兩個子陣列,然後遞迴再粗略分兩個子陣列,直到子數組裡面只有一個元素,那麼就自然排好序了,可

排序演算法之 基數排序 及其時間複雜空間複雜

        基數排序(radix sort)屬於“分配式排序”(distribution sort),又稱“桶子法”(bucket sort)或bin sort,顧名思義,它是透過鍵值的部份資訊,將要排序的元素分配至某些“桶”中,藉以達到排序的作用,基數排序法是屬於穩定

排序演算法時間複雜空間複雜-----總結

演算法的時間複雜度是指:演算法執行過程中所需要的基本運算次數。 常見的演算法時間複雜度由小到大依次為:Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n^2)<Ο(n^3)<…<Ο(2^n)<Ο(n!)。其中O(1)表示基本語句的執行次數是一個常數,一般來說,

排序演算法之 選擇排序 及其時間複雜空間複雜

        選擇排序(Selection sort)是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。 選擇排序是不穩定的排序方法(比如序列[5, 5, 3]第一次就將第

排序演算法之 氣泡排序 及其時間複雜空間複雜

        氣泡排序(Bubble Sort),是一種電腦科學領域的較簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因

排序演算法之 堆排序 及其時間複雜空間複雜

        堆排序是由1991年的計算機先驅獎獲得者、斯坦福大學計算機科學系教授羅伯特.弗洛伊德(Robert W.Floyd)和威廉姆斯(J.Williams)在1964年共同發明了的一種排序演算法( Heap Sort );         堆排序(Heapsort

排序演算法之 快速排序 及其時間複雜空間複雜

原文:http://blog.csdn.net/yuzhihui_no1/article/details/44198701 總結: 最好的情況是樞紐元選取得當,每次都能均勻的劃分序列。 時間複雜度O(nlogn)最壞情況是樞紐元為最大或者最小數字,那麼所有數都劃分到一個序

常見排序演算法時間複雜空間複雜

歸併排序空間複雜度為O(n) 快速排序空間複雜度為O(logn~n):因為快速排序是遞迴的,需要一個棧存放相應的資料,最大遞迴呼叫次數與遞迴樹的深度有關 堆排序空間複雜度在非遞迴情況下是O(1),遞迴情況下就是O(logn)