最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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),快速查找定位的評論 (共 條)

分享到微博請遵守國家法律
冷水江市| 平昌县| 游戏| 嘉荫县| 彭泽县| 吉木萨尔县| 敦化市| 鹤庆县| 新乡县| 绥芬河市| 赤水市| 会泽县| 庆元县| 石狮市| 鞍山市| 都安| 龙门县| 鹰潭市| 松原市| 油尖旺区| 金塔县| 象州县| 东海县| 疏附县| 肇庆市| 富裕县| 庐江县| 皋兰县| 汶上县| 富川| 肥乡县| 新宁县| 阿克| 莱州市| 紫阳县| 穆棱市| 虹口区| 康平县| 淄博市| 日土县| 晋城|