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.mzph.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的简单而高效的通用编…