DSA 陣列
陣列
陣列是用於儲存多個元素的資料結構。
陣列被許多演算法使用。
例如,演算法可以用來查詢陣列中的最小值,如下面的動畫所示
速度
{{ msgDone }}最小值: {{ minVal }}
在 Python 中,陣列的建立方式如下
my_array = [7, 12, 9, 4, 11]
注意:上面的 Python 程式碼實際上生成的是 Python 的 'list' 資料型別,但在此教程的範圍內,'list' 資料型別可以像陣列一樣使用。在此 處 瞭解更多關於 Python 列表的資訊。
陣列是帶索引的,這意味著陣列中的每個元素都有一個索引,該索引指示元素在陣列中的位置。本教程中的程式語言(Python、Java 和 C)對陣列使用基於零的索引,這意味著陣列中的第一個元素可以在索引 0 處訪問。
在 Python 中,此程式碼使用索引 0 將第一個陣列元素(值為 7)寫入控制檯
演算法:查詢陣列中的最小值
讓我們使用陣列資料結構建立我們的第一個演算法。
以下是查詢陣列中最小值的演算法。
工作原理
- 逐一遍歷陣列中的值。
- 檢查當前值是否是迄今為止的最小值,如果是,則儲存它。
- 檢視所有值後,儲存的值將是陣列中所有值中的最小值。
嘗試下面的模擬,看看查詢最小值演算法是如何工作的(動畫與本頁頂部的動畫相同)
速度
{{ msgDone }}最小值: {{ minVal }}
下一個模擬也查詢陣列中的最小值,就像上面的模擬一樣,但在這裡我們可以看到陣列中的數字是如何被檢查以找到最小值的
實現
在用實際程式語言實現演算法之前,通常最好先將演算法寫成一個分步過程。
如果你能用介於人類語言和程式語言之間的語言寫下演算法,那麼之後實現演算法會更容易,因為我們避免了陷入所有程式語言語法的細節。
- 建立一個變數 'minVal' 並將其設定為陣列的第一個值。
- 遍歷陣列中的每個元素。
- 如果當前元素的值低於 'minVal',則將 'minVal' 更新為此值。
- 遍歷完陣列中的所有元素後,'minVal' 變數現在包含最小值。
如果你願意,也可以用更像程式語言的方式來寫演算法,例如
變數 'minVal' = array[0]
對於陣列中的每個元素
如果當前元素 < minVal
minVal = 當前元素
注意:上面我們寫的兩個分步描述可以稱為“虛擬碼”。虛擬碼是用一種介於人類語言和程式語言之間的語言描述程式的功能。
寫下演算法後,用特定程式語言實現演算法就容易多了
示例
Python
my_array = [7, 12, 9, 4, 11]
minVal = my_array[0] # Step 1
for i in my_array: # Step 2
if i < minVal: # Step 3
minVal = i
print('Lowest value: ',minVal) # Step 4
執行示例 »
演算法時間複雜度

在探索演算法時,我們通常會檢視演算法相對於資料集的大小需要多長時間來執行。
在上面的例子中,演算法執行所需的時間與資料集的大小成正比,即線性關係。這是因為演算法必須訪問每個陣列元素一次才能找到最小值。迴圈必須執行 5 次,因為陣列中有 5 個值。如果陣列有 1000 個值,迴圈就必須執行 1000 次。
嘗試下面的模擬,看看查詢最小值所需的比較操作次數與陣列大小之間的關係。
有關時間複雜度的更詳細解釋,請參閱 此頁面。
本教程中的每個演算法都將連同其時間複雜度一起呈現。
{{ this.userX }}
操作次數:{{ operations }}