資料結構 時間複雜度

2022-08-11 10:03:12 字數 1291 閱讀 8116

俗話說:程式 = 資料結構 + 演算法;由此可見資料結構的重要性,本篇就是筆者學習資料結構的過程中的總結,可能帶給您的就是從入門到脫坑...

時間複雜度又稱為計算複雜度,是演算法有效性的度量之一。演算法的時間複雜度是乙個演算法執行時間的相對度量。而乙個演算法的執行時間是指計算機上從開始執行到結束整個演算法所使用的時間,大致等於計算機執行的一種操作(比如賦值,比較,計算,轉向,返回,輸入,輸出等)所需要的時間與演算法中進行基本操作次數的乘積。因為執行一種基本操作所需要的時間因機器而異,它是由機器本身的軟硬體環境決定的,與演算法無關,所以基本上只討論乙個問題-演算法中進行基本操作的次數。

如:求1到n的整數和。

int sum = 0;

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

上述小程式中,定義賦值執行了1次,for迴圈中,定義賦值執行1次,判斷語句執行n+1次 ,基本操作語句執行n次,迴圈體內執行n次;加起來整個執行次數為3n+2。

如:兩個n*n維矩陣相加。

void matrixadd(int[,] arr1,int[,] arr2,int[,] sum)

{ int i , j;

for(i =0;i執行此演算法色基本操作次數等於雙重for迴圈語句所包含的基本操作sum[i][j]=arr1[i,j]+arr2[i,j]的次數。最後得出基本操作次數為3n^2+3n+3;

其實到這我們可以看出,算乙個演算法的執行時間的計算是相當煩瑣的,對於比較複雜的演算法更是如此,所以我們用乙個大概的方式(數量級order)表示。

一般情況下,演算法的執行時間t是問題規模n的函式f(n),演算法的時間度量記作

t(n)=o(f(n))

表示當問題規模n增大時,演算法的執行時間的增長率和f(n)的增長率相同,稱作演算法的漸進時間複雜度,簡稱為時間複雜度,用數學符號"o"來表示,也稱大o表示法。

如果乙個演算法只存在順序和選擇結構,沒有迴圈結構,那麼演算法中基本操作的執行頻度與問題規模n無關,演算法的時間複雜度記作o(1),也稱為常數階。如果乙個演算法只有一重迴圈,則演算法的基本操作的執行頻度與問題規模n呈線性增大關係,演算法複雜度記作o(n),也叫線性階。演算法的時間複雜度通常還有多種形式。例如,對陣列進行排序的各種簡單時間複雜度為平方階o(n2);兩個n維矩陣的乘法運算其時間複雜度為立方階o(n3)等等。

本作品由繁星隕辰採用知識共享署名-非商業性使用 4.0 國際許可協議進行許可。

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

1.演算法效率 演算法效率可以用來衡量乙個演算法的好壞 演算法效率分析分為兩種 第一種是時間效率,第二種是空間效率.時間效率被稱為時間複雜度,空間效率被稱為空間複雜度.時間複雜度主要衡量的是乙個演算法的執行速度,而空間複雜度主要衡量乙個演算法所需要的額外空間,在計算機發展的早期,計算機的儲存容量很小...

資料結構時間複雜度

如何衡量乙個演算法的複雜度?演算法的時間複雜度和空間複雜度統稱為演算法的複雜度 void test int n for int k 0 k 2 n k icount intcount 10 while count icount 這個函式執行次數為f n n n 2 n 10 時間複雜度實際就是乙個函...

資料結構 時間複雜度

一 演算法 是解決特定問題求解不走的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。1.正確性 演算法的正確性是指演算法至少應該具有輸入 輸出和加工處理無歧義性 能正確反映問題的需求 能夠得島問題的正確答案。2.可讀性 演算法設計的另一目的是為了方便閱讀 理解和交流。3.健壯性...