資料結構複習之 資料結構和演算法概念

2021-06-04 13:14:25 字數 1745 閱讀 8346

資料結構就像是乙個催化劑,如果沒有原料是無用的,單是有了演算法就能幫演算法更快的實現任務;

資料結構:是指相互之間存在一種或多種特定關係的資料元素

的集合,簡單地說是資料之間的各種關係的集合。

程式設計=資料結構+演算法;

解釋:如果要寫乙個程式,需要選擇乙個良好的資料結構,加上良好的解決問題的演算法;

資料是乙個最廣泛的概念,資料中可以有多個資料物件,資料物件中可以有多個資料元素,資料元素中可以有多個資料項;

資料:能夠輸入到計算機並且能夠被計算機處理的符號;

資料物件:乙個類的事物;

資料元素:乙個記錄;

資料項:乙個記錄的屬性;

比如:class person{

string name;

int age;

則資料物件為person,資料元素為person的例項,比如person a,person b,資料項為name、age屬性;

抽象資料型別(adt):模擬於類,自定義型別;

資料結構:資料元素之間的相互關係,那上面的例子來說,就是a和b的關係;

資料結構分為:

(1)邏輯結構:資料元素之間的相互關係,比如a和b的關係;

-集合結構:資料元素之間沒有關係;

-線性結構:資料元素之間一對一關係,例如鍊錶;

-樹結構:資料元素之間一對多關係,比如二叉樹;

-**構:資料元素之間多對多關係,比如無向圖、有向圖;

(2)物理結構:資料元素在計算機中的儲存關係;

-順序儲存:資料元素連續儲存,資料儲存在連續的記憶體中;

-鍊錶儲存:資料元素用鍊錶連線,儲存不連續;

演算法和資料結構是密不可分的,因為如果資料結構是乙個靜態的東西,如果不去應用它,則只是乙個很死的東西,因此我們需要演算法;

比如 鄰接表,只介紹他可能只是了解他的概念,但是如果我們學了dfs、bfs就知道他的用途;

演算法:演算法是解決特定問題求解步驟的描述,指令的有限序列;

解決乙個問題可能有多種演算法,但是好的演算法是唯一的;

空間複雜度和時間複雜度需要權衡;

(1)輸入輸出:演算法需要有輸入和輸出;

(2)有窮性:執行有限時間後完畢,此處的有限時間指的是你期望的時間;

(3)確定性:在輸入相同的前提下,輸出要唯一;

(4)可行性:能夠執行出結果;

(1)正確性:對於合法輸入能夠得到正確答案,對於非法輸入能夠得到非法提示;

(3)健壯性:對於非法輸入,需要得到足夠的提示,而不是異常;

(4)執行速度快、占用儲存空間少;

(1)事後統計法:編寫好演算法後測試,一般不用,因為外部的環境會極大的影響演算法的速度,比如機器的好壞、輸入的規模;

(2)事先統計法:編寫好演算法前先估計;

判斷f(n)和g(n)哪個效率高的方法

:如果存在n,使得n>n時,f(n)>g(n),則f(n)劣於g(n);

演算法中最壞情況是一種底線,一般我們都需要保證最壞情況小於某個時間;

給定執行時間,去除加法常數、只保留最高端項、去掉最高端項的常數,就得到大o表示法;

比如4n^2+3n+2 = o(n^2)

1+2+3+.....+99+100通過:

sum =   1  + 2 + 3  +.....+99+100

sum = 100+99+98 +.......+2  +  1

2*sum = 101*100

sum = 5050

資料結構複習之 演算法分析

這部分主要目的是對於時間空間複雜度 演算法評價標準有乙個了解,以便於在後面的學習中可以對各種資料結構的效率有乙個客觀的評價標準 對比起來也更容易 代價可以分為兩種 時間代價和空間代價 時間代價主要是指演算法執行過程中所需的時間 空間代價指演算法所需要的儲存器資源 對於乙個演算法的評價應該可以客觀地展...

資料結構時間複雜度 資料結構與演算法之演算法概述

演算法,對應的英文單詞是algorithm,這是乙個很古老的概念,最早來自數學領域。我們都聽過高斯小時的故事和高斯演算法,這裡就不多說了,這是數學領域中演算法的乙個簡單示例。在數學領域裡,演算法是用於解決某一類問題的公式和思想。而我這裡所講的演算法,是電腦科學領域的演算法,它的本質是一系列程式指令,...

資料結構總概

第一遍看資料結構的時候知道裡邊有樹,圖,線性結構,鏈式結構等,但之間的聯絡其實並不是很清楚 這是第一遍的導圖。看完第二遍才能把這整本書給串起來。首先,資料結構指的是計算機組織資料儲存資料的方式。所以這本書就是介紹怎麼來對計算機裡的資料進行組織和儲存。資料結構的邏輯結構分為 集合 線性結構 樹形結構 ...