程式說明:
隨機產生6個數字,並依大小放入"資料清單"。(簡化版:不做排序程式)
詢問並請使用者輸入的數字。
每一輪找出最大值與最小值的中間值位置,然後比對中間值位置的數字是否與要搜尋的數字相符
若相符則比對結束(找到資料),若無則將中間值位置之數字與另一側的數字資料排除。
如果位置超過6顯示"此數不存在",否則顯示找到的位置。
💡重點提示:程式可分成兩部分
1️⃣產生數字清單
2️⃣進行比對
Part 1 產生數字清單
提示1:
建立"資料清單" (變數-->建立清單)
建立新變數"x" (亦可自訂變數名稱)
提示2:
**為不增加程式複雜度,本程式不進行數列排序的動作,而是以資料產生的條件來達成已排序的狀態**
程式開始執行時先刪除原資料
變數x初始值設為0
重複結構說明: 隨機產生1-10的數字,並讓x值因此改變數值,並且數值會越來越大(達成排序的效果),接著將每一次x值放入資料清單中
例如:
第一次: x初始值為0,隨機數為5,x值改變後值為5 (0+5)
第二次: x值為5,隨機數為10,x值改變後值為15(5+10)
Part 2 進行比對(搜尋)
提示1:
分別建立新變數
find: (布林值概念)當找到數字時顯示為1,未找到則顯示為0
high: 代表最大數位置
low: 代表最小數位置
mid: 中間值位置
提示2:
在詢問使用者要搜尋的數字後,設定各變數之初始值
find:設為0 (一開始先預設為未找到)
low: 設為1(預設為最小數的位置)
high: 設為資料清單的長度(最大數的位置)
mid: 設為0
提示3:
重複結構設定
結束條件:當最小位置(low)大於最大位置(high)
變數mid設為(low+high)/2,此處使用無條件捨去以取得整數
提示4:
數字比對條件設定
第一個條件(重複結構內): 如果資料清單的mid項大於"詢問的答案",那麼變數high設為mid-1
否則: (另一個條件設定)
如果mid項小於"詢問的答案",那邊變數mid+1
否則顯示"在第mid項"(表示找到了),並將find設為1
第二個條件(非重複結構內): 如果find為0(表示沒找到),那個顯示:"此數不存在"
執行畫面
詢問使用者要搜尋的數字
找到要搜尋的數字畫面
未找到數字的顯示畫面