資料結構-基本概念和時空複雜度

weixin_34208283發表於2018-09-29

歸納

  • 研究資料元素之間的客觀聯絡(邏輯結構)
  • 研究具有某種邏輯關係的資料在計算機儲存器(儲存結構)
  • 研究如何在資料的各種關係(邏輯關係和物理關係)的基礎上對資料實施一系列有效的基本操作(演算法)
  • 分析演算法的時間複雜度和空間複雜度

一、概述

1.資料的邏輯結構與儲存結構的基本概念;

資料結構的定義和一些基礎概念

資料結構的定義:資料元素之間的聯絡稱為結構,資料結構就是具有結構的資料元素合集。

資料結構為二元組:DataStructure=(D,R)

D:Data,資料元素的有限合集,某一個資料物件

R:Relation,Data的關係合集

邏輯結構

資料元素之間具有的邏輯關係(結構)

線性關係:如線性表,陣列,堆疊,佇列,串,檔案等

非線性關係:樹,二叉樹,圖,集合等

儲存結構

具有某種邏輯結構的資料,在計算機儲存器中的儲存方式(儲存映像2)

  • 順序儲存結構:用一組地址連續的儲存單元依次存放資料元素,
    資料元素之間的邏輯關係通過元素地址直接反映。

  • 鏈式儲存結構:用一組地址任意的儲存單元依次存放資料元素,資料元素之間的邏輯關係通過指標間接的反映。

  • 索引儲存結構:利用資料元素索引關係來確定資料元素的儲存位置,由資料元素本身與索引兩部分組成

特點:諸如查詢,插入,刪除等操作的時間效率較高,但是儲存空間開銷大

  • 雜湊儲存結構:(雜湊)通過事先準備好的雜湊函式關係與處理衝突的方法來確定元素的儲存位置

特點:諸如查詢、刪除和插入的時間效率較高,主要缺點是確定好的雜湊關係比較困難,即好的hash function

2.演算法的定義、基本性質以及演算法分析的基本概念,包括採用大O形式表示時間複雜度和空間複雜度。

演算法的定義

演算法的定義:演算法是用於解決某個特定課題的指令集合。演算法就是解決問題的方法。演算法是由人們組織起來準備加以實施的一系列有限的基本步驟。

演算法的性質

一個完整的演算法應該滿足下面五個基本性質:

  • 輸入
  • 輸出
  • 有窮性
  • 確定性
  • 有效性

演算法分析

演算法分析是指對演算法質量優劣的評價。

  • 正確性
  • 時間複雜度
  • 空間複雜度
  • 其他:演算法可讀性,可移植性,易測試性等等

時間複雜度

一個程式在計算機中執行的時間多少與很多因素有關

  • 問題的規模
  • 編譯程式功能的強弱以及所產生的機器程式碼質量的優劣
  • 機器執行一條指令的時間長短
  • 程式中語句的執行次數

頻度統計法

以語句的執行次數的多少作為演算法的時間量度的分析方法稱為頻度統計法

整個演算法的頻度是指演算法中所有的語句頻度之和

關於符號O的定義

當且僅當存在正數和,使得對所有
成立,則稱函式與同階,或者說與同一個數量級,記作

稱上式為演算法的時間複雜度,或者成該演算法的時間複雜度為\(O(g(n))\).

其中,n為問題的規模大小的度量。

[例子:矩陣乘法]
void function(int A[][n], int B[][n], int C[][n], int n)
{
    int i,j,k;
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
        {
            C[i][j] = 0;
            for(k=0;k<n;k++)
                C[i][j] = C[i][j] + A[i][k]*B[k][j];
        }
}

以上演算法的時間複雜度為.

常見覆雜度排序

表示演算法複雜度為常量,不隨我呢提規模的大小而改變

相關文章