使用 App Inventor 實作「選擇排序法」
今天來介紹,如何使用 App Inventor 來實作選擇排序法。
選擇排序法實作步驟:
1. 從索引值一開始 (通常是從索引碼為 0 開始,但是 Inventor 清單的第一項資料的索引碼為 1。),找出整個清單的最小值,然後跟索引碼一的值,進行交換,這樣第一輪結束最左邊的值就是最小的。
2. 再來從索引碼二開始,找出整個清單的最小值,再和索引碼二的值做交換,這樣索引碼二的值就是第二小的資料,後面以此類推。
以底下的值為例:
3、5、2、1、6、4
1. 開啟一個新專案,需要用到的元件如下:
2. 切換到程式設計,新增變數及當按鈕點選的方塊如下:
3. 開始撰寫選擇排序法的程序方塊,需要兩個區域變數,t 和 temp,t 拿來暫時存放索引碼,temp 存要交換的資料。
4. 我們需要用到雙迴圈,首先先拉一個迴圈方塊 i,範圍從 1 到 清單長度減 1。
5. 第二個迴圈 j 放到 i 迴圈裡面,這個迴圈主要是在比較值的大小,如果索引碼 j 的資料比索引碼 t 的資料還小,就把索引碼 j 給變數 t。
6. 接著再拉一個判斷的方塊,放在迴圈 j 的底下,如果變數 t 的值,和原來的不一樣,就將資料做交換。
7. 拖拉清單迴圈方塊,放在判斷方塊的底下,將每一輪交換完後的結果輸出。
至此,整個 App 已撰寫完畢!
App 完整程式碼:
aia 專案檔案下載
Java 版本程式碼:
public class SelectionSort {
public static void main(String[] args) {
int[] data = {3, 5, 2, 1, 6, 4};
sort(data);
}
static void sort(int[] data) {
int t, temp;
for(int i = 0;i < data.length - 1;i++) {
t = i;
for(int j = i + 1;j < data.length;j++)
if(data[j] < data[t])
t = j;
if(i != t) {
temp = data[i];
data[i] = data[t];
data[t] = temp;
}
for(int k : data)
System.out.print(" " + k);
System.out.println("");
}
}
}