1. 程式人生 > >《資料結構導論之時間複雜度》

《資料結構導論之時間複雜度》

Ѿ前言

    在資料結構導論中,於己而言時間複雜度算是比較難以計算的,認為對演算法邏輯上的理解要求較高,繼而小編在這裡先總結一些知識點。

Ѿ定義

時間複雜度:

電腦科學中,演算法的時間複雜度是一個函式,它定量描述了該演算法的執行時間。

最壞時間複雜度:

對相同輸入資料量的不同輸入資料,演算法時間用量的最大值。

平均時間複雜度:

對所有相同輸入資料量的各種不同輸入資料,演算法時間用量的平均值。

Ѿ知識點

Ѽ線性表

順序表實現演算法的分析

插入演算法的平均移動次數約為n/2,時間複雜度為O(n)

刪除演算法最壞情況下,元素移動次數為(n-1),時間複雜度為O(n)

                    元素平均移動次數約為(n-1)/2,時間複雜度為O(n)

定位演算法以引數X與表中結點值的比較為標準操作,平均時間複雜度為O(n)

求表長和讀表元素演算法的時間複雜度為O(1)

單鏈表

插入演算法InsertLinklis計算量為[n(n-1)]/2,時間複雜度為O(n^2)

後插演算法時間複雜度為O(n)

前插演算法時間複雜度為0(n)

迴圈連結串列

雙向迴圈連結串列是一種對稱結構,既可以直接訪問前驅結點又可以直接訪問後繼結點,找前驅結點和後繼結點的時間復

雜度均為O(1)

Ѽ哈夫曼演算法

平均比較次數為:WPL(T)=

Ѽ拓撲排序

時間複雜度為O(n+e)

n:圖的頂點個數         e:圖的弧的數目

Ѽ查詢

順序查詢、二分查詢、索引順序查詢依次的平均查詢長度為:

ASL(順序)=(n+1)/2

ASL((二分)≈-1

ASL(索引順序)=+1

順序查詢效率最低但限制少,二分查詢效率最高,但限制最強。索引順序查詢位於二者之間

二叉排序樹的平均查詢長度ASL≤1+

Ѽ演算法

插入排序

直接插入排序時間複雜度:O(n^2),穩定的排序方法

交換排序

氣泡排序時間複雜度為O(n^2),穩定的排序方法

快速排序:平均時間效能下,時間複雜度為:n;最壞情況下,即對幾乎已是排序好的輸入序列,該演算法效率

低,近似於O(n^2)

選擇排序

直接選擇排序:O(n^2),不穩定

堆排序:無論是在平均時間效能下還是在最壞情況下,時間複雜度均為n,不穩定

歸併排序

有序序列的合併:演算法執行時間為:O(n-h+1)

二路歸併排序:n,穩定的排序方法

Ѿ總結

            以上關於時間複雜度的總結只是一些知識點的梳理,具體時間複雜度是如何計算的,目前還沒有進行組織學習,待學習之後可再與君共勉哦


相關推薦

資料結構導論時間複雜

Ѿ前言     在資料結構導論中,於己而言時間複雜度算是比較難以計算的,認為對演算法邏輯上的理解要求較高,繼而小編在這裡先總結一些知識點。 Ѿ定義 ❶時間複雜度: 電腦科學中,演算法的時間複雜度

常用資料結構與演算法時間複雜求解

1.0 資料結構的相關概念 2.0 一些基本演算法的時間複雜度 O(1): int x=1; O(n): for(int i = 0; i < n; i++){ printf("%d",i); } O(lo

資料結構與演算法-時間複雜計算

一、方法 根本沒有必要計算時間頻度,即使計算處理還要忽略常量、低次軍和最高次剩的係數,所以可以採用如下簡單方法: 找出演算法中的基本語句:演算法中執行次數最多的那條語句就是基本語句,通常是最內層迴圈的迴圈體。 計算基本語句的執行次數的數量級:只需計算基本語句執行次數的數量級,這就

演算法與資料結構(一):時間複雜與空間複雜

最近突然萌生了一個想法,好好系統的學習一下演算法與資料結構然後產生一系列的文章來回顧與總結學到的東西,這部分我想從最簡單的部分一一介紹總結,包括一些很基礎的內容 為什麼要學習資料結構與演算法 以前在學校的時候就知道 程式 = 演算法 + 資料結構,程式的作用是用來處理與解決現實問題,而在描述與解決現實問

常用資料結構增刪查時間複雜

資料結構 根據關鍵字查詢 根據索引查詢 插入 刪除 陣列 O(n) O(1) O(n) O(n) 有序陣列 O(logn) O(1)

資料結構::遞迴時間複雜的計算

開篇前言:為什麼寫這篇文章?筆者目前在學習各種各樣的演算法,在這個過程中,頻繁地碰到到遞迴思想和分治思想,驚訝於這兩種的思想的偉大與奇妙的同時,經常要面對的一個問題就是,對於一個給定的遞迴演算法或者用分治思想縮小問題規模的演算法,如何求解這個演算法的時間複雜度呢?在goo

資料結構時間複雜和空間複雜

類似於時間複雜度的討論,一個演算法的空間複雜度(Space Complexity)S(n)定義為該演算法所耗費的儲存空間,它也是問題規模n的函式。漸近空間複雜度也常常簡稱為空間複雜度。  空間複雜度(Space Complexity)是對一個演算法在執行過程中臨時佔用儲存空間大小的量度。一個演算法在

演算法分析時間複雜與空間複雜

演算法的評價指標主要是正確性,健壯性、可讀性和有效性4個方面,有效性又包括時間複雜度和空間複雜度。 演算法的時間複雜度和空間複雜度通常採用數量級的形式來表示,而數量的形式有常量階、對數階、線性階、線性對數階、平方階、立方階、指數階、階乘階等。若演算法的時間複雜度和空間複雜度

NOIP-模擬試題--時間複雜題解

2018 NOIP 全套資料下載 描述 小明正在學習一種新的程式語言 A++,剛學會迴圈語句的他激動地寫了好多程式並 給出了他自己算出的時間複雜度,可他的程式設計老師實在不想一個一個檢查小明的程式, 於是你的機會來啦!下面請你編寫程式來判斷小明對他的每個程式給出的時間複雜度是否正確。 A

中國大學MOOC-陳越、何欽銘-資料結構-2018秋 01-複雜1 最大子列和問題 (20 分)

01-複雜度1 最大子列和問題 (20 分) 給定K個整陣列成的序列{ N​1​​, N​2​​, ..., N​K​​ },“連續子列”被定義為{ N​i​​, N​i+1​​, ..., N​j​​ },其中 1≤i≤j≤K。“最大子列和”則被定義為所有連續子列元素的和

併發資料結構-1.1.4 複雜測量&1.1.5 正確性

原文連結,譯文連結,譯者:張軍,校對:周可人 1.1.4 複雜度測量 一個被廣泛研究的方向是在理想化模型,如並行隨機存取機上分析併發資料結構和演算法的漸進複雜度[35, 122, 135]。然而,很少有將這些資料結構放在一個真實的多處理器上進行建模的。這裡有多種原因,大部分原因跟系統硬體架構與

資料結構(一)——資料結構初識及演算法複雜介紹

    資料結構,毋庸置疑,在程式設計中是極其重要的存在,在電腦科學中,不只是一般程式設計的基礎,而且是設計和實現編譯程式、作業系統、資料庫系統及其他系統程式和大型應用程式的重要基礎。     因此,CSDN的第一篇文章就選擇了資料結構(也是打算再次補習可

中國大學MOOC-陳越、何欽銘-資料結構-2015秋 01-複雜2 Maximum Subsequence Sum (25分)

Given a sequence of K integers { N​1​​,N​2​​, ..., N​K​​ }. A continuous subsequence is defined to be { N​i​​,N​i+1​​, ..., N​j​​ } where 1≤i≤j≤K. T

資料結構與演算法-演算法複雜簡介

一、演算法 演算法是指令的集合,是為解決特定問題而規定的一系列操作。它是明確定義的可計算過程,以一個數據集合為輸入,併產生一個數據集合作為輸出,簡單來說演算法就是計算機解題的過程。 舉例:如何求1+2+3+...100=? 演算法1:依次相加 演算法2:高斯演算法:首尾相加

資料結構導論樹、二叉樹、森林間的轉換》

前言     樹、二叉樹、森林間一共有三種轉換,作為一種應用題的型別出現,小編在這裡以真題為典型例證為大家撰寫轉換過程,願為大家開闊思路,增添自考勝算。 基本概念 樹 英文名字為Tree,一類重要的資料結構,是n(n≥0)個結點的有限集合。相關特徵: (1)當n=0時,即

排序時間複雜和空間複雜總結

排序方法 平均時間複雜度 最好 最差 空間複雜度 穩定度 氣泡排序 o(n^2) o(n) o(n^2) o(1) 穩定 選擇排序 o(n^2)

資料結構與演算法學習--複雜分析

什麼是複雜度分析 資料結構和演算法解決是“如何讓計算機更快時間、更省空間的解決問題”。因此需從執行時間和佔用空間兩個維度來評估資料結構和演算法的效能。分別用時間複雜度和空間複雜度兩個概念來描述效能問題,二者統稱為複雜度。複雜度描述的是演算法執行時間(或佔用空間)與資料規模的增長關係。 為什麼需要複雜度分析

資料結構與演算法--蠻力法氣泡排序與時間複雜分析(java)

蠻力法         蠻力法又稱窮舉法和列舉法,是一種簡單直接地解決問題的方法,常常直接基於問題的描述,所以蠻力法也是最容易應用的方法。但是蠻力法所設計的演算法時間特性往往是比較低的,典型的指數時間演算法一般都是通過蠻力

回爐篇4—資料結構(3)演算法的時間複雜、空間複雜

演算法的時間複雜度、空間複雜度 時間複雜度 定義:基本操作重複執行的次數是問題規模n的某個函式,用T(n)表示,有輔助函式f(n),使得當n趨於無窮大時,T(n)/t(n)的極限值為不等於零的常數。記作T(n)=O(f(n)),稱O(f(n))為演算法的漸進時間複雜度,簡稱時間複雜度

資料結構和演算法分析排序篇--歸併排序(Merge Sort)和常用排序演算法時間複雜比較(附贈記憶方法)

歸併排序的基本思想 歸併排序法是將兩個或以上的有序表合併成一個新的有序表,即把待排序序列分成若干個子序列,每個子序列是有序的。然後再把有序子序列合併為整體有序序列。注意:一定要是有序序列! 歸併排序例項: 合併方法: 設r[i……n]由兩個有序子表r