五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

App Inventor 2 算法之 - 二分算法(Binary Search)實現(xiàn),快速查找定位

2023-05-13 15:01 作者:AI2中文網(wǎng)  | 我要投稿

應(yīng)用介紹

二分算法(Binary Search)是生活中非常常用的折半算法,能解決快速查找、快速定位的問題,主要用到數(shù)學(xué)和邏輯代碼塊。

本示例程序演示了采用普通遍歷的方式和二分的方式分別需要幾次能夠猜中隨機給出的數(shù)字。

測試截圖


二分算法(Binary Search)教程(難度系數(shù):★★☆)

教程入口:App Inventor 2 中文網(wǎng)(fun123.cn)?-> 登陸 ->?“項目指南”?-> 二分算法(BinarySearch)"開始學(xué)習(xí)"。

App基本邏輯設(shè)計

  1. 設(shè)計一個普通遍歷算法,從 1 開始逐個往上猜,這也是最笨的一種方式,當(dāng)然最終能夠猜對,當(dāng)隨機數(shù)是100時,最多需要猜100次。

  2. 再設(shè)計一個二分算法,每次猜中間折半的結(jié)果,比如第一次猜50,如果小了則再猜75,如此直到不能再折半為止,也定能猜中。至于需要幾次猜中,大家可以利用本示例程序進行驗證,本教程最后會給出答案。

準(zhǔn)備工作

  1. 界面簡單布局,如下:

界面布局
  1. 讓App程序從 1 ~ 100 中隨機生成一個數(shù)字,定義一個空列表,設(shè)置到“列表顯示框”組件中:

隨機數(shù)及列表顯示


普通遍歷算法

普通遍歷方式很簡單,設(shè)計一個 1 ~ 100的循環(huán),每次比對一下是否和上面的隨機數(shù)相等,相等就是猜中了,就不用繼續(xù)猜了。代碼如下:

普通遍歷方式


二分算法

二分方式代碼如下:

二分方式


原理示意圖如下:

binary search原理示意圖


注意點:計算中間二分?jǐn)?shù)字的時候,需要向下取整,否則計算出來的是小數(shù),當(dāng)然不是我們想要的,我們的前提是猜整數(shù)數(shù)字。

舉個例子:

App隨機給出的數(shù)字是17,我們依次猜的是:

  1. (1 +100)/2 = 50(大了1 50 100

  2. (1 +50)/2 = 25(大了1 25 50

  3. (1 +25)/2 = 13(小了) 1 13 25

  4. (13+25)/2 = 19(大了13 19 25

  5. (13+19)/2 = 16(小了) 13 16 19

  6. (16+19)/2 = 17(猜中) 16 17 19

開始測試

點擊按鈕開始測試,列表中會顯示兩種方式猜中需要的次數(shù),二分的話還會輸出每次猜的具體是哪個數(shù)字。

后記

測試下來,我們會發(fā)現(xiàn),都是7次或7次之內(nèi)就能猜中,其中的原理是什么呢?

算法復(fù)雜度是O(logN)。2^7 = 128 > 100,因此最多7次能猜中。大家可以思考并嘗試一下將100改為1000,這時最多需要幾次猜中?

不僅如此,在計算機科學(xué)中,二分算法(Binary Search)也是非?;A(chǔ)的算法,使用場景非常的多,有序表的檢索、數(shù)據(jù)庫索引技術(shù)等。


App Inventor 2 算法之 - 二分算法(Binary Search)實現(xiàn),快速查找定位的評論 (共 條)

分享到微博請遵守國家法律
从化市| 清丰县| 山阴县| 舞钢市| 观塘区| 新民市| 彩票| 堆龙德庆县| 额敏县| 吉林市| 石楼县| 克东县| 盘锦市| 灯塔市| 油尖旺区| 哈尔滨市| 兰西县| 昆明市| 汤阴县| 乾安县| 阆中市| 石河子市| 平利县| 麻江县| 沅陵县| 祁门县| 黎川县| 班戈县| 福鼎市| 浦东新区| 康平县| 淄博市| 扶余县| 沂源县| 大丰市| 安新县| 霞浦县| 漳州市| 河曲县| 全南县| 门源|