資料結構與演算法(2 從Reverse到大O表示法)

2021-07-03 02:15:54 字數 1027 閱讀 8311

接上面的問題,如何從實現乙個陣列的翻轉,其實很簡單

1、定義乙個頭,乙個尾

2、判斷條件:頭是否大於尾

3、交換元素值

4、頭,尾更向中間靠攏

**如下:

//關鍵**

public

static

void

reversearray(int arr)

}

/*

演算法的執行時間等於它所有基本操作執行時間之和, 而一條基本操作的執行時間等於它執行的次數和每一次執行的時間的積,

如下:演算法的執行時間 = 操作1 + 操作2 + ... + 操作n

操作的執行時間 = 操作執行次數 x 執行一次的時間

然而存在乙個問題,不同的程式語言,不同的編譯器,或不同的cpu等因素將導致執行一次操作的時間各不相同,這樣的結果會使演算法的比較產生歧義, 於是我們假定所有計算機執行相同的一次基本操作所需時間相同,而把演算法中基本操作所執行的最大次數作為量度。就是說我們把演算法的執行時間簡單地用基本操作的執行次數來代替了。

時間複雜度和大o表示法

當問題規模即要處理的資料增長時, 基本操作要重複執行的次數必定也會增長, 那麼我們關心地是這個執行次數以什麼樣的數量級增長。所謂數量級可以理解為增長率。這個所謂的數量級就稱為演算法的漸近時間複雜度(asymptotic time complexity), 簡稱為時間複雜度。如何分析這個數量級呢? 由於基本操作的執行次數是問題規模n 的乙個函式t(n), 所以問題就是我們要確定這個函式t(n)是什麼, 然後分析它的數量級, 擁有相同數量級的函式 f(n) 的集合表示為 o(f(n)), o是數量級的標記。如果t(n)的數量級和f(n)相同,

顯然t(n) ∈ of(n)。這個函式的值表示當我要處理的資料量增長時,基本操作執行次數以什麼樣的比例增長。

*/

這就是大o表示法,很簡單來講,就是將演算法的執行時間進行了乙個模擬漸近。利用大o表示法,我們可以很容易估計出演算法的時間需要多少。

這也是我們在程式設計的時候具有的很好的作用。

資料結構與演算法(2)

程式設計 資料結構 演算法 資料元素 是組成資料的 有一定意義的基本單位,在計算機中通常作為整體處理。資料項 乙個資料元素可以由若干個資料項組成。資料項是資料不可分割的最小單位。資料物件 是性質相同的資料元素的集合,是資料的子集。資料結構 是相互之間存在一種或多種特定關係的資料元素的集合。邏輯結構 ...

資料結構與演算法(2)

鏈結參考 資料結構是相互之間存在一種或多種特定關係的資料元素的集合 那麼具體是什麼關係呢,或者說,這裡的結構又是指什麼呢?按照視點的不同,我們把資料結構分為邏輯結構和物理結構 1,邏輯結構 是指資料物件中資料元素之間的相互關係 邏輯結構分為以下四種 2,物理結構 是指資料的邏輯結構在計算機中的儲存形...

資料結構與演算法2

資料邏輯結構分為線性結構與非線性結構,線性結構分為線性表,棧,佇列,字串,陣列,廣義表 非線性結構主要分為樹形和圖形棧佇列 1只能插入表尾,刪除表尾 1.插在表尾,刪除表頭 xianjin 2.後進先出 2.先進先出 3.例如十進位制轉換,檢驗括號是否匹配 4.棧的資料型別定義 初始化 銷毀 判斷是...