演算法的執行效率於資料的儲存結構有關麼?為什麼

2021-03-04 06:08:14 字數 6652 閱讀 2528

1樓:匿名使用者

有關,你去了解下快取記憶體,cache

2樓:傲世修羅王

當然有關,好的資料結構能加速演算法的速度。所以說演算法和資料結構是不分家的。但是這和快取記憶體沒有關係,那是硬體上的東西。

演算法的執行效率與資料的儲存結構有關嗎。

3樓:匿名使用者

你好,演算法的執行效率與資料的儲存結構是有很大關係的,例如在陣列中的插入刪除演算法的o(n)=n,而在連結串列中插入刪除演算法的o(n)為常數

純手打,請給分,謝謝!

演算法的執行效率與什麼有關

4樓:匿名使用者

b對了吧,不過似乎不完整。這應該是資料結構的題目,資料的儲存結構將直接影響到演算法的執行效率的。比如用陣列跟用連結串列的效果就是不一樣的,它們的查詢、插入、刪除、排序都是不一樣的。

程式執行的效率與與什麼有關

5樓:匿名使用者

程式執行的效率跟演算法有關,而乙個演算法的優劣可以用空間複雜度與時間複雜度來衡量。

1、空間複雜度是指演算法在計算機內執行時所需儲存空間的度量

2、一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t(n)表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,t(n)/f(n)的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式。記作t(n)=o(f(n)),稱o(f(n)) 為演算法的漸進時間複雜度,簡稱時間複雜度。

在各種不同演算法中,若演算法中語句執行次數為乙個常數,則時間複雜度為o(1),另外,在時間頻度不相同時,時間複雜度有可能相同,如t(n)=n2+3n+4與t(n)=4n2+2n+1它們的頻度不同,但時間複雜度相同,都為o(n2)。

按數量級遞增排列,常見的時間複雜度有:

常數階o(1),對數階o(log2n),線性階o(n),線性對數階o(nlog2n),平方階o(n^2),立方階o(n^3),...,

k次方階o(n^k),指數階o(2^n)。隨著問題規模n的不斷增大,上述時間複雜度不斷增大,演算法的執行效率越低。

6樓:匿名使用者

選第乙個。

其實三個都有關係。但是後兩個說「只」就不對。

主要和cpu速度,程式的迴圈邏輯和選擇邏輯的關係,程式的資料結構,資料量的使用。

7樓:

程式執行的效率 除與資料的儲存結構密切相關外,還與資料的邏輯結構有關,以及選取什麼樣的演算法有關。

個人認為與 資料結構(邏輯結構、儲存結構)與演算法有密切關係。

vb中演算法執行效率與什麼有關

8樓:匿名使用者

與程式演算法的執行次數和演算法的複雜程式直接相關。

什麼是資料結構和演算法?學演算法還需要去了解資料結構嗎?

9樓:匿名使用者

你這理解不完全正確。

因為資料結構不只是記憶體中資料的排列,它是對資料的一種組織方式,就像圖書館要排書一樣,是為了便於操作,同時它本身也整合了對通用操作:比如查詢、比較等的支援。陣列不是一種資料結構,而是一種資料型別。

乙個完整的資料結構包括邏輯結構和儲存結構。通常選擇了資料結構,演算法也隨之確定,是資料而不是演算法是系統構造的關鍵因素。

因此在語言實現上,資料結構通常也會包含與之相對應的演算法集合,這些演算法是指基本演算法:查詢、索引、比較等。

資料結構的邏輯結構和硬體是沒有關係的,而其儲存結構受到計算機硬體系統工作方式的影響,通常這點影響在於資料時順序儲存還是離散儲存。演算法的基礎是資料結構。只有指定明確的資料結構,演算法才能設計完成,脫離資料結構,演算法是無法,也不可能成立的。

因為不需要資料的演算法就不是乙個有效的計算機演算法,演算法中任何對資料的組織形式都可以被稱之為資料結構。

2.資料結構在程式設計中的地位是極其重要的,是乙個程式實現的基礎中的基礎,在此基礎上才能構建演算法。通常而言,你不了解什麼高深的演算法,一樣能完成工作,但是如果你不了解基本的資料結構,那麼可以說,你根本就不能完成乙個任何有實質性內容的程式。

donald ervin knuth教授在其《計算機程式設計藝術》的第一卷《基本演算法》中花費的絕大部分的篇幅去論述資料結構。由此可見資料結構對演算法的重要性。

10樓:匿名使用者

資料結構可以優化資料的存諸,使得資料存諸能夠更省空間,查詢更高效。

有時候資料結構本身就是一種演算法,比如線段樹,splay樹,堆。

而有一些演算法是要建立在資料結構的基礎之上才能夠更高效的。

對於不同的演算法需要採用合適的資料結構。比如最短路徑演算法,對於希疏圖,我們要用連線表來存連。這樣才不能導至大量的空連。而且連的查詢也更高效。

而對於密圖,我們採用連線矩陣來存諸。

11樓:匿名使用者

你可以這樣理解,資料結構你把它理解成excel裡面的製作一張**的表模,比如你做一張工資表,那麼表模肯定你要考慮每乙個資料的意義和它們應該放置於哪個位置。而演算法就是你在**內部資料間的關聯運算,可以是邏輯的也可以是數學的。

因此你製作一張工資表,你肯定要先定結構,然後再定演算法。當然你說只學演算法不學結構照樣能做出結構來,但你考慮更高乙個層次,如果你這張工資表只是乙個公司幾百份**中的乙份,你如果不把它的結構搞得很清楚的表達,你其他**要呼叫這張**的資料就無從做到,而你如果用結構來表示,就很清晰了,這就是結構和演算法的不同。

結構是較為巨集觀的思考方式,演算法是微觀的實現,它們之間密不可分。當然在現在軟體開發工程裡面,系統工程師可以分為做結構和做演算法的,但一般做結構的都是更核心的成員,他們懂演算法,但不用做演算法,他們只要把資料結構模型構造好,工程分拆清晰,讓其他的程式設計師按照他們規劃的結構去做細緻的工作就可以了。

12樓:匿名使用者

資料結構與演算法密不可分。

資料結構注重了資料的組織形式。 資料的一定的組織方式已決定了只適用於某此演算法。

演算法尋求在指定資料結構上的最優解, 也就是最有效率的方法。 為此也有此設計特定的資料結構的, 比如紅黑樹就是被發明出來的。

好的演算法: 儲存空間效率(資料結構)與時間效率(演算法效能)達到一定的平衡, 而非只突出時間效率。 所以一定要同時考慮這兩個方面才能設計出乙個好的演算法。

應用中還要考慮特定的環境, 比如嵌入式, 沒有大的記憶體, 這時有些佔用大量的記憶體的一些演算法就不適用了。

另一種角度: 借用c++中stl的概念,

資料結構: 在c++中定義為容器, 比如:vector(陣列) list(連結串列)。。。

而這些容器對於裝入其中的東西並無限制, 比如使用者可定義裝int, 也可以裝char, 還可以裝string資料。

演算法: 在c++中定義也叫演算法, 比如find, 查詢指定的乙個元素, 你可在vector容器中查詢 , 也可用在list容器查詢。 但是在不同的容器中查詢效率是不同的, 這是容器本身決定的。

13樓:匿名使用者

呵呵,這兩個都是要學的。。。不學你怎麼做好程式設計

14樓:碼寶寶呀

資料結構就是「多維度」的模版 + 內部與外部的聯絡。 當您定義好資料結構的時候,乙個初始的資料模版就被定義出來,然後這個利用這個模版,您可以生成你想要的資料的模樣。 這些資料內部的值可以內在有各種各樣的聯絡,資料與資料直接也有各種個樣的聯絡。

利用資料內部和外部的聯絡的配合,可以幫助人們抽象各種個樣的問題。 常見的資料結構有連結串列,棧, 佇列,陣列等等。

演算法以我的理解就是解決乙個問題時需要的乙個流程。通常乙個演算法能解決一類相似的問題,只要你的程式按照既定演算法的步驟進行,就可以解決此類問題。對學習演算法,我的建議就是把演算法具體成影象,把幾個關鍵的步驟用影象記憶下來。

資料結構和演算法是相輔相成的。資料結構是為演算法服務的,演算法要建立在特定的資料結構之上,因此無法孤立資料結構來講演算法,也無法孤立演算法來講資料結構。所以學演算法就會涉及到資料結構,同樣學資料結構也必須學到演算法。

想知道更多的資料結構與演算法知識嗎?可以去了解一下小碼哥李明杰。

知乎搜尋話題是可以自動補全,使用了什麼資料結構和演算法?

15樓:你猜我猜哇擦猜

首先,要能夠讀懂**,總結演算法的思想,搞清楚該題演算法是完成什麼功能,然後是填空也好,寫演算法結果也好,就不成問題了。要想提高的快,就得多練啊。同時教材中的相關演算法也要熟,好多是書中的原演算法

1. 在計算機中,演算法是指什麼?

答案:解題方****而完整的描述。

2. 在下列選項中,哪個不是乙個演算法一般應該具有的基本特徵?

說明:演算法的四個基本特徵是:可行性、確定性、有窮性和擁有足夠的情報。 答案:無窮性。

3. 演算法一般都可以用哪幾種控制結構組合而成? 答案:順序、選擇、迴圈。 4. 演算法的時間複雜度是指?

答案:演算法執行過程中所需要的基本運算次數。 5. 演算法的空間複雜度是指?

答案:執行過程中所需要的儲存空間。 6. 演算法分析的目的是?

答案:分析演算法的效率以求改進。 7. 下列敘述正確的是(c)

a.演算法的執行效率與資料的儲存結構無關

b.演算法的空間複雜度是指演算法程式中指令(或語句)的條數 c.演算法的有窮性是指演算法必須能在執行有限個步驟之後終止 d.演算法的時間複雜度是指執行演算法程式所需要的時間 8. 資料結構作為計算機的一門學科,主要研究什麼?

答案:主要研究資料的邏輯結構、對各種資料結構進行的運算,以及資料的儲存結構。 9. 資料結構中與所使用的計算機無關的是資料的(c) a.儲存結構 b.物理結構

c.邏輯結構 d.物理和儲存結構 10. 下列敘述中,錯誤的是(b)

a.資料的儲存結構與資料處理的效率密切相關 b.資料的儲存結構與資料處理的效率無關

c.資料的儲存結構在計算機中所佔的空間不一定是連續的 d.一種資料的邏輯結構可以有多種儲存結構 11. 資料的儲存結構是指什麼?

答案:資料的邏輯結構在計算機中的表示。 12. 資料的邏輯結構是指?

答案:反映資料元素之間邏輯關係的資料結構。

13. 根據資料結構中各資料元素之間前後件關係的複雜程度,一般將資料結構分為? 答案:線性結構和非線性結構。

14. 下列資料結構具有記憶功能的是(c) a.佇列 b.迴圈佇列 c.棧

d.順序表

15. 下列資料結構中,按先進後出原則組織資料的是(b) a.線性連結串列 b.棧

c.迴圈連結串列 d.順序表

資料結構:資料結構在講演算法效率的度量中提到基本操作和原操作,想問一下什麼叫做基本操作?什麼叫做原操

16樓:

基本操作和原操作,估計是除迴圈以外的其他作,即除了for、while、do while 以外的其他語句,

n * n 的矩陣相乘,有4層 for,最裡層的乙個整數乘法,這個乘法就是基本操作

17樓:死亡筆記

度量演算法的效率:時間複雜度、空間複雜度。

時間複雜度,一般情況,演算法中基本操作重複執行的次數是問題規模n的乙個函式f(n),演算法的時間度量記做t(n)=o(f(n)),他表示隨著問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同,稱做演算法的漸近時間複雜度,簡稱時間複雜度。

插入乙個概念:語句的頻度指的是該語句重複執行是次數。

我們在計算時間複雜度的時候,

先要找出演算法的基本操作,並根據基本操作語句計算出其執行次數。

再找出其同數量級。。。t(n)=o(f(n)=數量級)。

例如:[cpp] view plain copy

for(i=1; i<=n; ++i)

}我們可以看到,其中的基本操作語句就只有兩個,乙個c[i][j]=0,乙個c[i][j]+=a[i][k]*b[k][j],可以知道前乙個的執行次數為n^2,後乙個的執行次數為n^3。所以t(n)=o(n^3)。

按數量級遞增排列,常見的時間複雜度有:

常數階o(1),對數階o(log2n),線性階o(n),

線性對數階o(nlog2n),平方階o(n^2),立方階o(n^3),...,

k次方階o(n^k),指數階o(2^n)。隨著問題規模n的不斷增大,上訴的時間複雜度不斷增大,演算法的執行效率越低。

在pascal中比較容易理解,容易計算的方法是:看看有幾重for迴圈,只有一重則時間複雜度為o(n),二重則為o(n^2),依此類推,如果有二分則為o(logn),二分例如快速冪、二分查詢,如果乙個for迴圈套乙個二分,那麼時間複雜度則為o(nlogn)。

對於實際計算中,我們知道,對於相同的程式,對於其執行的時間,影響的因素有很多。

1.程式的演算法優劣。

2.問題的規模。

3.書寫程式的語言。

4.編譯程式產生的機器**在質量。

5.機器執行指令的速度。。。等等。

空間複雜度,乙個程式的空間複雜度是指執行完乙個程式所需記憶體的大小。利用程式的空間,可以對程式的執行所需要的記憶體多少有個預先估計。乙個程式執行時除了需要儲存空間和儲存本身所使用的指令、常數、變數和輸入資料外,還需要一些對資料進行操作的工作單元和儲存一些為現實計算所需資訊的輔助空間。

程式執行時所需儲存空間包括以下兩部分。

(1)固定部分。這部分空間的大小與輸入/輸出的資料的個數多少、數值無關。主要包括指令空間(即**空間)、資料空間(常量、簡單變數)等所佔的空間。這部分屬於靜態空間。

(2)可變空間,這部分空間的主要包括動態分配的空間,以及遞迴棧所需的空間等。這部分的空間大小與演算法有關。

乙個演算法所需的儲存空間用f(n)表示。

s(n)=o(f(n))

其中n為問題的規模,s(n)表示空間複雜度。

在資料結構中,資料的邏輯結構,資料的儲存結構及資料的運算之間

資料的邏輯結構決定了資料間運算關係的具體定義,而資料的儲存結構與資料的運算方法,沒有直接的關係,資料的儲存結構決定了維護資料邏輯結構時各種操作的運算複雜程度。在資料結構課程中,資料的邏輯結構,資料的儲存結構及資料的運算之間存在著怎樣的關係?1 資料的邏輯結copy構說明資料元素bai之間的順序du關...

硬碟資料結構的資料儲存原理,硬碟資料結構的介紹

1.檔案的讀取。作業系統從目錄區中讀取檔案資訊 包括檔名 字尾名 檔案大小 修改日期和檔案在資料區儲存的第乙個簇的簇號 我們這裡假設第乙個簇號是0023。作業系統從0023簇讀取相應的資料,然後再找到fat的0023單元,如果內容是檔案結束標誌 ff 則表示檔案結束,否則內容儲存資料的下乙個簇的簇號...

資料結構問題簡單描述儲存過程的使用步驟

sql server的儲存過程是一個被命名的儲存在伺服器上的transacation sql語句集合,是封裝重複性工作的一種方法,它支援使用者宣告的變數 條件執行和其他強大的程式設計功能。儲存過程相對於其他的資料庫訪問方法有以下的優點 1 重複使用。儲存過程可以重複使用,從而可以減少資料庫開發人員的...