A-level 數學/OCR/D1/演算法
以下是 D1 演算法內容的框架,內容來自 AQA、OCR、OCR MEI 和 Edexcel 的規範。並非所有規範都包含以下所有內容。
演算法是一組精確的指令,遵循這些指令可以解決問題。它們可以以各種形式呈現,例如文字、圖片、流程圖。食譜、編織圖案、設定 VCR 或組裝桌子的說明都是我們在日常生活中可能遇到的演算法的例子。
演算法的主要優勢是我們可以使用計算方法來解決問題。一個人很容易將數字 2、5、3、1 和 4 按升序排列,但要對一個包含 1000 個隨機數字的列表進行排序,則需要花費長得多的時間。此外,擁有一個演算法意味著其他人可以實現與您相同的結果,而無需弄清楚如何實現它。具體來說,擁有一個演算法可能允許計算機執行這些操作。

您可能需要能夠遵循或建立流程圖,以演示演算法。有三種基本形狀使用
- 橢圓形,用於開始和停止以及輸入和輸出。
- 矩形,用於計算和指令。
- 菱形,用於是/否問題。
給定一副 52 張牌,要根據花色進行排序;它們在當前牌序中的位置用數字表示
- 第 1 張牌是什麼花色?它是紅心。
- 第 2 張牌是什麼花色?它是黑桃。我們想要一個黑桃在紅心之前的牌組。因此,我們將這兩張牌交換,然後退一步。如果我們已經處於開頭,則忽略退一步的需要。
- 現在的第 1 張牌是什麼花色?它是黑桃。
- 現在的第 2 張牌是什麼花色?它是紅心。這兩張牌的順序正確,因此我們不交換它們,而是轉到牌組中的下一張牌。
- 第 3 張牌是什麼花色?它是紅心。它與前一張牌相同,因此我們繼續到牌組中的下一張牌。
........... 依此類推,直到我們到達倒數第二張牌。我們進行比較,必要時交換,然後停止排序。
- 接下來,我們將紅心(或我們想要的任何其他花色)從 52 張牌的牌組中分離出來,現在只剩下 13 張牌的牌組,然後根據 2、3、... J、Q、K、A 對這個較小的牌組進行排序,並對其他 3 種花色也是如此,一次一種。
- 之後,我們幾乎完成了,將 4 組各 13 張牌合併成一個包含 52 張牌的大牌組,然後停止。
對於一組數字,將第一個數字與其右側的數字進行比較。
13, 2, 4, 3, 82
13>2,因此它向右移動。
2, 13, 4, 3, 82
13>4,因此它向右移動。
2, 4, 13, 3, 82
13>3,因此它向右移動。
2, 4, 3, 13, 82
13<82,因此它保持不動。
在第一遍結束時:2, 4, 3, 13, 82
在第二遍結束時:2, 4, 3, 13, 82
在第三遍結束時:2, 3, 4, 13 82
這組數字只需要 2 遍,但在更大的資料集上,它會變得相當大。假設集合中的專案是唯一的,則最大遍數等於集合的大小。
從一組數字中,選擇前兩個數字並將其劃線。這兩組數字是在第一遍中排序的。
在第二遍中,要排序的數字範圍增加一個,因此比較前三個數字並將它們按順序排序。
依此類推,直到所有數字都被包含在範圍內並排序。
第一遍 - 23, 2, 4, 8, 9 - 23>2,因此 2 被排序到左側。
第二遍 - 2, 23, 4, 8, 9 - 23>4,因此 4 被排序到左側。
第三遍 - 2, 4, 23, 8, 9 - 數字已排序
第四遍 - 2, 4, 8, 23, 9 - 數字已排序
最終的數字集 = 2, 4, 8, 9, 23 - 數字已排序
使用中點作為樞軸(或問題中要求您使用的任何值),對每個子列表執行穿梭排序。繼續,直到除一個之外的所有項都用作樞軸。
- 將數字集分成 n/2 個子列表。
- 對子列表進行穿梭排序。
- 重新組合資料範圍,並將其拆分成之前子列表數量的一半。
- 再次對資料範圍進行穿梭排序。
- 重複此過程,直到子列表的數量為 2。
“滿箱”演算法是一種將可以填滿“箱子”的物體組合在一起,以儘可能少的箱子來裝載所有物體。剩下的物體再裝入其他箱子。以下示例可以很好地說明這一點(注意:這不是考試題,也不代表實際試卷上的複雜程度)。
問)一家電腦軟體公司需要將軟體釋出到容量為 200 kB 的軟盤上。檔案的大小分別為 25 kB、90 kB、30 kB、120 kB、190 kB、10 kB、70 kB、40 kB、100 kB、140 kB 和 80 kB。需要多少張軟盤?使用“滿箱”演算法來得到一個解決方案。
答)首先,沿著列表查詢加起來等於 200 的值。沒有特定的方法(每個人似乎都用不同的方法),但我發現找到加起來等於完整 10 的組合會有所幫助,等等。用這些組合填充“箱子”。
箱子 | 檔案
A | 120, 80
B | 190, 10
C | 70, 40, 90
這留下了 25、30、100 和 140。使用剩餘的值儘可能地接近滿箱是有意義的。
(140 + 25 + 30) = 195 <- 所以將這些值放到下一個箱子中,剩下 100 放入最後一個箱子中。
解決方案
箱子 | 檔案
A | 120, 80
B | 190, 10
C | 70, 40, 90
D | 140, 25, 30
E | 100
需要 5 張軟盤才能容納所有檔案。
依次將每個物體放入第一個可以容納它的可用空間。
使用其中一種排序演算法按大小遞減順序重新排序箱子,然後將首次適應演算法應用於重新排序的列表。