vb獲取數組長度_如何實現數組的二分查找

二分查找是一種極其高效、簡練的查找算法,它不僅簡單,易用,而且還非常的高效。相對于順序查找,二分查找在效率是呈現指數性提升,數據量越大,越能體現出二分查找法的優勢。

二分查找的查找過程是:先確定待查找元素所在線性表的范圍,然后逐步縮小范圍直到找到(或找不到)該元素為止。

二分查找算法要求數據必須是有順序的排序,即要么是升序排列,要么是降序排列。因此,在使用二分查找法前,需要將數組處理為有序數組。

案例說明

本案例演示了如何利用二分查找算法在一個有序數組中查找指定內容。

ee48e08044ce4483f0cfe07639dc348c.png

關鍵技術

利用do循環結構語法,每次循環時查找一個中間值,并判斷是否是要找的內容,如果是則結束循環,否則修改中間值,繼續查找,直到找到指定內容,或者查詢完畢。

設計過程

步驟一

按照下圖完成程序界面的搭建。

2e0c5626554d81fa49c7280baf495b21.png

步驟二

首先,需要在代碼區頂部聲明一個全局數組arr(1000)

Option ExplicitDim arr(1000) As Long

步驟三

然后,編寫窗體加載的代碼,在這里我們為arr數組賦予一個初始的內容。

Private Sub Form_Load()    Dim i As Long    '給數組分配內容    For i = 1 To 1000        arr(i) = i * 2    Next iEnd?Sub

步驟四

接著,我們編寫查詢按鈕的代碼。

Private Sub Command1_Click()    Dim low%, hight%, mid%????Dim?flag?As?Boolean??'是否查詢到內容的標記????'給下標、上標和中間值初始值    low = 1    hight = 1000    mid = (low + hight) / 2    flag = False????'開始查找    Do While (flag = False And hight >= low)        If arr(mid) = Text1 Then            MsgBox "找到該數,下標為:" & mid            flag = True            Exit Do        ElseIf arr(mid) > Val(Text1) Then            hight = mid - 1        Else            low = mid + 1        End If        mid = (low + hight) / 2        DoEvents    Loop    If flag = False Then MsgBox "未查詢到該數"End Sub

步驟五

最后,我么來進行測試。運行程序,輸入一個要查找的數值,然后點擊查詢按鈕。

544fea588dcebee7a3f28c04a0c7adc0.png

總結

數組在VB中具有非常非常重要的作用,對于處理數據具有絕對的優勢,因此掌握數組的基本操作,尤其是增加、刪除和插入以及查詢都是相當重要的。小伙伴們一定要勤加練習哦。

友情提示:

添加QQ群 一起學VB 1138946358 可第一時間獲取本案例源代碼~~

2f5d8e3747f7063f6f7e201674daaf20.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394503.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394503.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394503.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

400錯誤返回了服務器信息,使用Spring MVC,接受JSON錯誤的POST請求會導致返回默認的400錯誤代碼服務器頁面...

我正在使用RESTAPI。接收到帶有錯誤JSON的POST消息(例如{sdfasdfasdf})會使Spring返回默認服務器頁面,以顯示400錯誤請求錯誤。我不想返回頁面,我想返回自定義JSON錯誤對象。當使用ExceptionHandler引發異常時,可以執行此操作。因此&#xff…

【Python】list和tuple 區別比較

列表 List classmates [Michael, Bob, Tracy] 元組 Tuple tuple一旦初始化就不能修改,比如同樣是列出同學的名字: >>> classmates (Michael, Bob, Tracy) 現在,classmates這個tuple不能變了,它也沒有append()&#xff…

leetcode315. 計算右側小于當前元素的個數(樹狀數組解法)

leetcode315. 計算右側小于當前元素的個數(樹狀數組解法) 題目:給定一個整數數組 nums,按要求返回一個新數組 counts。數組 counts 有該性質: counts[i] 的值是 nums[i] 右側小于 nums[i] 的元素的數量。 樹狀數組解法 java class Solution …

洛谷 P1101 單詞方陣

給一nn的字母方陣,內可能蘊含多個“yizhong”單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著 8個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間可以交叉,因此有可能共用字母。輸出時,將不是單詞的字母用*代…

從頭學習計算機網絡_如何從頭開始構建三層神經網絡

從頭學習計算機網絡by Daphne Cornelisse達芙妮康妮莉絲(Daphne Cornelisse) 如何從頭開始構建三層神經網絡 (How to build a three-layer neural network from scratch) In this post, I will go through the steps required for building a three layer neural network. I’…

python 文件處理

f open(chenli.txt) #打開文件 first_line f.readline() print(first line:,first_line) #讀一行 print(我是分隔線.center(50,-)) data f.read() # 讀取剩下的所有內容,文件大時不要用 print(data) #打印讀取內容f.close() #關閉文件1…

第五章 MVC之Bundle詳解

一、簡述 Bundle,英文原意就是捆、收集、歸攏。在MVC中的Bundle技術,也就是一個對css和js文件的捆綁壓縮的技術。 它的用處: 將多個請求捆綁為一個請求,減少服務器請求數 壓縮javascript,css等資源文件,減小…

所給服務器端程序改寫為能夠同時響應多個客戶端連接請求的服務器程序_一文讀懂客戶端請求是如何到達服務器的...

點擊上方“藍色字體”,選擇 “設為星標”關鍵訊息,D1時間送達!互聯網是人類歷史上最偉大的發明創造之一,而構成互聯網架構的核心在于TCP/IP協議。那么TCP/IP是如何工作的呢,我們先從數據包開始講起。1、數據包一、HTTP…

消息服務器 推送技術,SSE服務器推送技術

SSE即 server send event 服務器發送事件,在在早期可能會使用ajax向服務器輪詢的方式,使瀏覽器第一時間接受到服務器的消息,但這種頻率不好控制,消耗也比較大。但是對于SSE來說,當客戶端向服務端發送請求,服…

Contest2162 - 2019-3-28 高一noip基礎知識點 測試5 題解版

傳送門 T1 單調棧 按照b排序 在家每一個物品時,判斷一下a和b的關系 如果s[sta[top]].a>s[i].b,就彈棧 記錄所有時候的height,并取最大值 T2 單調棧裸題 單調棧是干什么的?? 單調棧是記錄一個數的一側的第一個比他大…

在package.json里面的script設置環境變量,區分開發及生產環境。注意mac與windows的設置方式不一樣...

在package.json里面的script設置環境變量,區分開發及生產環境。 注意mac與windows的設置方式不一樣。 "scripts": {"publish-mac": "export NODE_ENVprod&&webpack -p --progress --colors","publish-win": "…

leetcode 978. 最長湍流子數組(動態規劃)

978. 最長湍流子數組 當 A 的子數組 A[i], A[i1], …, A[j] 滿足下列條件時&#xff0c;我們稱其為湍流子數組&#xff1a; 若 i < k < j&#xff0c;當 k 為奇數時&#xff0c; A[k] > A[k1]&#xff0c;且當 k 為偶數時&#xff0c;A[k] < A[k1]&#xff1b; 或 …

人工智能取代工作_人工智能正在取代人們的工作-開發人員是下一個嗎?

人工智能取代工作I was recently asked to comment on whether there was any point in becoming a developer right now, because AI might be doing your job very soon.最近有人要求我評論一下現在成為開發人員是否有任何意義&#xff0c;因為AI可能很快就會完成您的工作。 …

python類self_Python類中的self到底是干啥的

Python編寫類的時候&#xff0c;每個函數參數第一個參數都是self&#xff0c;一開始我不管它到底是干嘛的&#xff0c;只知道必須要寫上。后來對Python漸漸熟悉了一點&#xff0c;再回頭看self的概念&#xff0c;似乎有點弄明白了。首先明確的是self只有在類的方法中才會有&…

PHP中關于取模運算及符號

執行程序段<?php echo 8%(-2) ?>&#xff0c;輸出結果是&#xff1a; %為取模運算&#xff0c;以上程序將輸出0 $a%$b,其結果的正負取決于$a的符號。 echo ((-8)%3); //將輸出-2 echo (8%(-3)); //將輸出2轉載于:https://www.cnblogs.com/457248499-qq-com/p…

[pytorch] Pytorch入門

Pytorch入門 簡單容易上手&#xff0c;感覺比keras好理解多了&#xff0c;和mxnet很像&#xff08;似乎mxnet有點借鑒pytorch&#xff09;&#xff0c;記一記。 直接從例子開始學&#xff0c;基礎知識咱已經看了很多論文了。。。 import torch import torch.nn as nn import to…

無線服務器密碼讓別人改了,wifi密碼被改了怎么辦_wifi密碼被別人改了怎么辦?-192路由網...

wifi密碼被別人改了怎么辦&#xff1f;wifi密碼之所以被別人修改&#xff0c;是因為其他人知道了你路由器的登錄密碼。所以&#xff0c;如果發現自己wifi密碼被別人修改了&#xff0c;應該立刻登錄到路由器設置界面&#xff0c;修改路由器登錄密碼、修改wifi密碼、并調整wifi加…

[archlinux][hardware] 查看SSD的使用壽命

因為最近把16GB的SSD做成了HDD的cache&#xff0c;所以比較關系壽命問題。 使用smartctl工具。 參考&#xff1a;https://www.v2ex.com/t/261373 linux 下面只有 smartmontools 這一個工具&#xff0c;而且只對像三喪和 intel 這樣的大廠支持良好&#xff0c;其余的廠家文檔不全…

leetcode174. 地下城游戲(動態規劃)

一些惡魔抓住了公主&#xff08;P&#xff09;并將她關在了地下城的右下角。地下城是由 M x N 個房間組成的二維網格。我們英勇的騎士&#xff08;K&#xff09;最初被安置在左上角的房間里&#xff0c;他必須穿過地下城并通過對抗惡魔來拯救公主。 騎士的初始健康點數為一個正…

如何設置Windows版Go —快速簡便的指南

by Linda Gregier琳達格雷格(Linda Gregier) Another great language to add to your full-stack developer tool belt is the simple and productive general-purpose programming language of Go.添加到您的全棧開發人員工具帶中的另一種很棒的語言是Go的簡單而高效的通用編…