資料結構與演算法基礎

2022-04-07 23:42:05 字數 1729 閱讀 5524

一、資料結構概述

資料結構的主要任務是通過分析資料物件的結構特徵,包括邏輯結構及資料物件之間的關係,然後把邏輯結構表示成計算機課實現的物理結構,從而便於計算機處理。

概念術語:

二、資料的邏輯結構與物理結構:

邏輯結構(logical structure)是指在資料物件中資料元素之間的相互關係。資料元素之間存在不同的邏輯關係構成了以下四種結構型別:

1)集合型別:集合結構中的資料元素除了同屬於乙個集合外,它們之間沒有其他的關係。各個資料元素是「平等的」,它們的共同屬性是「同屬於乙個集合」,資料結構中的集合就類似於數學中的集合;

2)線性結構:線性結構中的資料元素之間是一對一的關係,並且是一種先後的次序;

3)樹形結構:樹形結構中的資料元素之間存在一種一對多的層次關係;

4)圖形結構:圖形結構的資料元素關係是多對多的關係;

儲存結構(storage structure)也稱為物理結構(physical structure),指的是資料的邏輯結構在計算機中的儲存形式,資料的儲存結構一般可以反映資料元素之間的邏輯關係,分為順序儲存結構和鏈式儲存結構:

1)順序儲存結構:是把資料元素存放在位址連續的儲存單元裡,其資料間的邏輯關係和物理關係是一致的;

2)鏈式儲存結構:是把資料元素存放在任意的儲存單元裡,這組儲存單元可以是連續的,也可以是不連續的。資料元素的儲存關係並不能反映其邏輯關係,因此需要用乙個指標存放資料元素的位址,這樣通過位址就可以找到相關聯資料元素的位置;

三、演算法

演算法效率的度量方法:

1)演算法採用的策略、方案;

2)編譯產生的**質量;

3)問題的輸入規模;

4)機器執行指令的速度;

四、時間複雜度

在進行演算法分析時,語句總的執行次數t(n)是關於問題規模n的函式,進而分析t(n)隨n的變化情況並確定t(n)的數量級;演算法的時間複雜度,也就是演算法的時間度量,記作:t(n)=o(f(n))。它表示隨問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同,稱作演算法的漸進時間複雜度,簡稱為時間複雜度。其中f(n)是問題規模n的某個函式,這樣用大寫o來體現演算法時間複雜度的記法,我們稱之為大o記法。

階非正式術語

o(1)

常數階o(n)

線性階o(n^2)

平方階o(logn)

對數階o(nlogn)

nlogn階

o(n^3)

立方階o(2^n)

指數階常用的時間複雜度所耗費的時間從小到大依次是:

五、空間複雜度

演算法的空間複雜度通過計算演算法所需的儲存空間實現,演算法空間複雜度的計算公式記作:s(n)=o(f(n)),其中,n為問題的規模,f(n)為語句關於n所佔儲存空間的函式;

一般情況下,乙個程式在機器上執行時,除了需要儲存的程式本身指令、常數、變數和輸入資料外,還需要儲存對資料操作的儲存單元。若輸入資料所佔空間只取決於問題本身,和演算法無關,這樣只需要分析該演算法在實現時所需的輔助單元即可。若演算法執行時所需的輔助空間相對於輸入資料量而言是個常數,則稱此演算法為原地工作,空間複雜度為o(1)。

資料結構與演算法基礎

電腦科學的研究物件是問題 解決問題的過程,以及通過該過程得到解決方案。演算法是具有有限步驟的過程,依照這個過程能解決問題。因此,演算法就是解決方案。電腦科學是研究問題及其解決方案,以及研究目前無解的問題的科學。可以簡答的認為電腦科學就是研究演算法的科學。抽象資料元素 沒有實際含義的資料元素,例如 a...

資料結構與演算法 演算法基礎一

1 2 插入排序,在前k個元素有序的前提下插入arr k 將前面有序元素依次與arr k 比較 移動,3 最終將arr k 插入有序元素中的合適位置,形成k 1個有序元素4 5 org.junit.test 6public void testinsert 13 arr j temp 14 15 1 ...

資料結構與演算法 基礎資料結構 佇列實現

在學習佇列的實現過程中,跟著教程自己手寫了佇列的實現,理解佇列的先進先出原理。以及略微複雜的迴圈佇列形成的乙個閉環,略微吃力,還需努力,詳細說明在注釋 package com.zhouyou.queue 普通佇列的實現 public class arrayqueue public void push...