精华内容
下载资源
问答
  • VB编程:对数组进行二分查找-29

    千次阅读 2016-11-29 09:54:03
    程序代码 Option Explicit Dim myarray(100) As Integer    '定义数组,下标0-100,数组元素为101个 Private Sub Command1_Click()  Dim low, high, mid, n As Integer  Dim found As Boolean  ...
        
    运行效果
    VB编程:对数组进行二分查找-29

    程序代码
    Option Explicit
    Dim myarray(100) As Integer           '定义数组,下标0-100,数组元素为101个

    Private Sub Command1_Click()
        Dim low, high, mid, n As Integer
        Dim found As Boolean
        low = 0
        n = 0
        high = UBound(myarray)
        found = False
        mid = CInt((high + low) / 2)      '转换为整型,小数部分四舍五入,避免下标出现小数
        Do While Not found And (high >= low)
            n = n + 1
            If CInt(Text1.Text) = myarray(mid) Then   ''查找值和当前中间值比较,相等输出
                found = True
                Label1.Caption = "查询次数:" & n & vbCrLf & _
                                 "查询数值:" & myarray(mid) & vbCrLf & _
                                 "数组下标:" & mid
                Exit Do
            ElseIf CInt(Text1.Text) < myarray(mid) Then  '查找值和当前中间值比较,小了
                high = mid - 1
            Else                                   '查找值和当前中间值比较,大了
                low = mid + 1
            End If
        mid = CInt((high + low) / 2)
        Loop
    End Sub

    Private Sub Form_load()
     Dim i As Integer
        For i = 0 To UBound(myarray)                '给数组赋值
            myarray(i) = i
            Print myarray(i)
        Next i
    End Sub

    学习心得
    1、二分法查找的思想就是:先取中间值作比较,看大了还是小了,大了就往下取数,小了就往上取数。这样逐步缩小查找范围,就不用每个数都去做比较。适用于有序数组,确实能提高计算效率,是一个很不错的思维方式。

    展开全文
  • 程序代码 Option Explicit Dim myarray(100) As Integer '定义数组,下标0-100,数组元素为101个 Private Sub Command1_Click() Dim low, high, mid, n As Integer Dim found As Boolean low = 0 ...
    运行效果
    VB编程:对数组进行二分查找-29

    程序代码
    Option Explicit
    Dim myarray(100) As Integer           '定义数组,下标0-100,数组元素为101个

    Private Sub Command1_Click()
        Dim low, high, mid, n As Integer
        Dim found As Boolean
        low = 0
        n = 0
        high = UBound(myarray)
        found = False
        mid = CInt((high + low) / 2)      '转换为整型,小数部分四舍五入,避免下标出现小数
        Do While Not found And (high >= low)
            n = n + 1
            If CInt(Text1.Text) = myarray(mid) Then   ''查找值和当前中间值比较,相等输出
                found = True
                Label1.Caption = "查询次数:" & n & vbCrLf & _
                                 "查询数值:" & myarray(mid) & vbCrLf & _
                                 "数组下标:" & mid
                Exit Do
            ElseIf CInt(Text1.Text) < myarray(mid) Then  '查找值和当前中间值比较,小了
                high = mid - 1
            Else                                   '查找值和当前中间值比较,大了
                low = mid + 1
            End If
        mid = CInt((high + low) / 2)
        Loop
    End Sub

    Private Sub Form_load()
     Dim i As Integer
        For i = 0 To UBound(myarray)                '给数组赋值
            myarray(i) = i
            Print myarray(i)
        Next i
    End Sub

    学习心得
    1、二分法查找的思想就是:先取中间值作比较,看大了还是小了,大了就往下取数,小了就往上取数。这样逐步缩小查找范围,就不用每个数都去做比较。适用于有序数组,确实能提高计算效率,是一个很不错的思维方式。

    展开全文
  • 这道题是要我们在一个二维数组里...这题我最开始先按行二分,确定target(如果在数组里)所在的行,再对这一行做二分确定target所在的列,但是TLE了,就不贴出代码了。可以发现,这个二维数组,如果我们能把它变成一...

    f295bceae7c4ba91f7a28f0518c8775c.png

    这道题是要我们在一个二维数组里搜索某个元素target,找到了返回true,没找到返回false。

    这个二维数组性质是,每一行都是升序的,且每一行的最后一个元素小于下一行的第一个元素。

    都说升序和查找了,显然应该想到二分。

    这题我最开始先按行二分,确定target(如果在数组里)所在的行,再对这一行做二分确定target所在的列,但是TLE了,就不贴出代码了。

    可以发现,这个二维数组,如果我们能把它变成一维数组,不就是一个升序的一维数组了吗?那这题不就是裸的二分了吗?

    可以开一个额外的一维数组顺序存放二维数组的元素,但没必要。

    可以直接将二维数组的下标映射到一维数组里,这样就比较节省空间。

    如果行数为rows, 列数为cols,对于某个元素martix[i][j],它在一维数组的下标就是i * cols + j。 这是二维数组下标转换为一维数组下标。

    但是我们二分要对一维数组二分呀,所以我们需要把一维数组的下标转换为二维数组,显然一维数组的下标范围是0 ~ rows * cols - 1。

    从上面二维数组转一维数组下标我们可以发现,行号实际上是一维数组下标除以列数,列号实际上是一维数组下标对列数取余。

    也就是说,一维数组中下标为x的元素,在二维数组中行号为 x / cols, 列号为 x % cols(这个很好理解,cols是一行的大小嘛)

    然后就是对这个一维数组做二分啦。

    代码如下:

    class Solution {
    public:
        bool searchMatrix(vector<vector<int>>& matrix, int target) {
            if(matrix.size() == 0 || matrix[0].size() == 0) {            //空数组特判,LC特色
                return false;
            }
            int rows = matrix.size(), cols = matrix[0].size();            
            int left = 0, right = rows * cols - 1;
            while(left <= right) {
                int mid = left + (right - left) / 2;
                if(matrix[mid / cols][mid % cols] == target) {            //找到了,返回true
                    return true;
                } else if(matrix[mid / cols][mid % cols] > target) {
                    right = mid - 1;
                } else if(matrix[mid / cols][mid % cols] < target) {
                    left = mid + 1;
                }
            }
            return false;                  //搜遍了也没找到,返回false
        }
    };
    展开全文
  • 折半查找算法及程序实现 一教材分析 教学重点以图示法方式...语句的基本用法和 VB基本操作这节课学生可能会遇到的最大问题是如何归 纳总结对分查找解决不同情况问题的一般规律鉴于此在教学中要积极引导 学生采取分解动
  • 可以看到一行行的Ⅷ程序代码显示在其中,我们在这里可以修改和输入程序代码来让程序实现一定的功能,它是整个程序设计的关键,如果你对VB语言的语法还不是十分了解,可以通过后面的章节来学习,很快就能人门的。...
  • 9.智能纠错算法,共7种,有效保证播放的成功率,以及预防某些恶意代码所致的弹出页面. 10.同步可拖定位歌词显示. 11.支持多播放列表,最大数无限制. 12.其他功能:歌曲下载到本地/将排行榜歌曲添加到播放列表/组合搜索/...
  • 文件查询模块操作说明:在名称文本框中输入要查找的文件名称,在目录文本框中选择目录,如要选择更下一级目录,可在文件列表框选择,单击“查找”按钮,便可查找出所需要的文件;在查找结果的列表框中单击某一文件,...
  • Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java...
  • ASP.NET精品课程+源代码

    千次下载 热门讨论 2009-01-05 20:15:51
    特别是在目前IT服务逐渐火热的趋势下,我校组织专业教师经对行业企事业调研、在Internet查找这方面的资料后得知,中国IT行业存在巨大的人才缺口,2007年已经突破百万。北京、上海等大中城市急需高技能型网络建设人才...
  • 29.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。 public void test(int i) { lock(this) { if (i>10) { i--; test(i); } } } 答:不会发生死锁,(但...
  • Java开发技术大全(500个源代码).

    热门讨论 2012-12-02 19:55:48
    代码范例列表 第1章 示例描述:本章演示如何开始使用JDK进行程序的开发。 HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载...
  • 该资料是《Visual C++ 2005入门经典》的源代码及课后练习答案 对应的书籍资料见: Visual C++ 2005入门经典 基本信息 原书名: Ivor Horton's Beginning Visual C++ 2005 原出版社: Wiley 作者: (美)Ivor Horton...
  • -十六进制编辑器——允许编辑任何进制文件——支持十六进制剪切、复制和粘贴 -十六进制字符的插入和删除 -十六进制查找、替换和全部替换 -书签 -同时多窗口编辑 -全面的宏支持,包括保存和加载 -上...
  • UE中文版编辑器

    2013-12-17 17:11:46
    资源简介 基于磁盘的文本编辑 -文档大小不受限制,即使是数兆字节的文件也只占用最小限度内存 -可同时打开和显示多个文档 -列模式编辑!!!插入列/删除/减切/添加序列 ...-文件排序(包括删除...-代码折叠、、
  • UltraEdit修改器

    2013-10-28 21:24:03
    基于磁盘的文本编辑 -文档大小不受限制,即使是数兆字节的文件也只占用最小限度内存 -可同时打开和显示多个文档 -列模式编辑!!!插入列/删除/减切/添加序列 ...-文件排序(包括删除重复...-代码折叠、、、
  • UltraEdit-32绿色免安装

    2014-07-08 21:26:44
    -十六进制编辑器——允许编辑任何进制文件——支持十六进制剪切、复制和粘贴 -十六进制字符的插入和删除 -十六进制查找、替换和全部替换 -书签 -同时多窗口编辑 -全面的宏支持,包括保存和加载 -上下文相关...
  • UE编辑器中文版

    2013-03-21 09:46:21
    基于磁盘的文本编辑 -文档大小不受限制,即使是数兆字节的文件也只占用最小限度内存 -可同时打开和显示多个文档 -列模式编辑!!!插入列/删除/减切/添加序列 ...-文件排序(包括删除重复文件,...-代码折叠、、、
  • 基于磁盘的文本编辑 -文档大小不受限制,即使是数兆字节的文件也只占用最小限度内存 -可同时打开和显示多个文档 -列模式编辑!!!插入列/删除/减切/添加序列 ...-文件排序(包括删除重复文件,...-代码折叠、、、
  • ue 14 及注册码

    2014-08-13 14:10:04
    -十六进制编辑器——允许编辑任何进制文件——支持十六进制剪切、复制和粘贴 -十六进制字符的插入和删除 -十六进制查找、替换和全部替换 -书签 -同时多窗口编辑 -全面的宏支持,包括保存和加载 -上下文相关...
  • UE编辑器(中文版)

    2011-10-30 12:32:00
    基于磁盘的文本编辑 -文档大小不受限制,即使是数兆字节的文件也只占用最小限度内存 -可同时打开和显示多个文档 -列模式编辑!!!插入列/删除/减切/添加序列 ...-文件排序(包括删除重复文件,...-代码折叠、、、
  • UltraEdit v17.20.0破解版

    2011-10-24 19:07:31
    基于磁盘的文本编辑 -文档大小不受限制,即使是数兆字节的文件也只占用最小限度内存 -可同时打开和显示多个文档 -列模式编辑!!!插入列/删除/减切/添加序列 ...-文件排序(包括删除重复文件,...-代码折叠、、、
  • -十六进制编辑器——允许编辑任何进制文件——支持十六进制剪切、复制和粘贴 -十六进制字符的插入和删除 -十六进制查找、替换和全部替换 -书签 -同时多窗口编辑 -全面的宏支持,包括保存和加载 -上下文相关...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
  • 《C/C++常用算法手册》3篇,共13章,“第1篇算法基础篇”介绍了算法概述,重点分析了数据结构和基本算法思想;“第2篇算法基本应用篇”详细讲解了算法在排序、查找、数值计算、数论、经典趣题和游戏中的应用;“第...
  • UltraEdit编辑器

    2014-07-20 10:04:55
    -十六进制编辑器 允许编辑任何进制文件 支持十六进制剪切 复制和粘贴 -十六进制字符的插入和删除 -十六进制查找 替换和全部替换 -书签 -同时多窗口编辑 -全面的宏支持 包括保存和加载 -上下文相关帮助 -...
  • 《C/C++常用算法手册》3篇,共13章,“第1篇算法基础篇”介绍了算法概述,重点分析了数据结构和基本算法思想;“第2篇算法基本应用篇”详细讲解了算法在排序、查找、数值计算、数论、经典趣题和游戏中的应用;“第...

空空如也

空空如也

1 2 3 4 5
收藏数 81
精华内容 32
关键字:

vb二分查找代码