VB学习记录——数组

数组知识初步总结

1.定义一个数组,其实就是让系统在内存中分配一个连续的区域,用来存储数组的元素。其格式为:Dim 数组名字  (下界 To 上界) As  类型。

Dim MarkVB(1 To 30) As Integer '定义一个一维数组  上界30  下界是1  共30个元素。 也可以Dim MarkVB(29) As integer,此定义下表从0开始,元素也是30个。   加上Option Base 1  ,Dim MarkVB(30) As integer这个语句也是30个元素,下标从1开始。数组大小=上界-下界+1。

2.动态数组 ,不能定义数组的维数和个数。Dim  Mark()  As Integer  使用的时候重新声明     redim Mark(n)即可。使用关键字Pereserve可以保存之前的数组内容。

3. ReDim 语句的下标可以是常量,也可以是有确定值的变量,程序书写时可以多次使用ReDim来改变数组的大小,但是每次使用Redim语句都会造成数组之前数据的丢失,使用Preserve选项对数组进行重新说明时,将会保留数组中原来的数据,但是该参数只能改变最后一维的大小。

4.数组输入函数 Array(),此函数只能对一维数组进行赋初值,并且这个数组必须为Variant变体型,不能声明数组的大小和类型。Dim  Mark() ,Mark=Array(1,2,3)  ,此时可以利用Ubound()函数确定数组的上界,比如Ubound(Mark)=2,利用For循环可以输出数组元素。

5.Val()是一个类型转换函数 ,可以把字符串转换成相应的整数,Val("-3")=-3   VAL("vb5.0")=0  VAL("12 bC")=12  VAL与CSTR功能相反,CSTR将数值表达式的值换成字符串        CSTR(125)="125"

6. 选择法排序

思想:求取数组最值下标,并交换位置。

步骤: 1. 每一轮在未排序的数组中,找出最值和第一个元素进行交换,这样就确定了一个元素的位置

             2. 未排序的数组范围缩小一个,继续采取上述步骤进行新的排序

注意一下  n个数据只要进行N-1轮排序即可  附上一个代码

 7.冒泡法排序

思想:冒泡排序 每一次将相邻的两个数字进行比较,比如10个数字。每一次比较相邻的两个,让比较大的数值往下走,第一轮比较9次就可以将最大的数字排到最后面,10个数字需要进行9趟比较,第i趟比较的次数为10-i.

注意点:冒泡排序是可以提前结束的,如果在某一趟的排序比较中,没有发现变量的下沉,那么说明数字已经是有序排列,则此时可以终结排序。设置一个标志变量 ,放在内循环中,用来检测排序是否完成 。程序如下

8. 插入数据,在有序数组中插入一个数据

基本思想:首先寻找插入的位置,其次将插入位置之后的元素一次向后移位 。  

注意事项及代码 如下

9.删除数据

10. Asc()函数用来返回字符的ASCII码   并且只返回第一个字符  Asc("abc")  =97   

Ucase()函数:UCase(string),返回 Variant(String)其中包含转成大写的字符串。必要的 string参数为任何有效的字符串表达式。如果 string 包含 Null,将返回Null。只有小写的字母会转成大写,原本大写或非字母之字符保持不变。例:Dim MyWord= UCase("Hello World")' 返回"HELLO WORLD"。

### VB.NET 中数组分组统计方法 在 VB.NET 中,可以使用多种方式对数组进行分组并执行统计数据的操作。以下是通过 LINQ 和传统循环两种方式进行分组统计的具体实现。 #### 使用 LINQ 进行分组统计 LINQ 提供了一个简洁而强大的接口来进行数据查询和聚合操作。下面是一个简单的例子,展示如何使用 LINQ 对整数类型的数组按特定条件进行分组,并计算每组的数量: ```vb Imports System.Linq Module Module1 Sub Main() ' 定义一个包含重复项的数组 Dim numbers() As Integer = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4} ' 使用 LINQ 查询表达式对数组中的元素按照值进行分组,并获取各组数量 Dim groupedNumbers = From n In numbers _ Group By Key = n Into g = Group _ Select New With {.Number = Key, .Count = g.Count()} For Each item In groupedNumbers Console.WriteLine($"数字 {item.Number} 出现次数为: {item.Count}") Next End Sub End Module ``` 这段代码首先创建了一个名为 `numbers` 的一维数组,其中包含了若干个整数值。接着运用了 LINQ 来对该数组内的元素依据其自身的值做分类汇总工作;最终输出各个不同类别下所含有的成员数目[^1]。 #### 使用传统循环逻辑完成分组统计 如果不希望依赖于高级特性如 LINQ,则可以通过传统的遍历加字典的方式达到同样的效果。这里给出一段基于此思路编写的程序片段作为示范: ```vb Imports System.Collections.Generic Module Module1 Sub Main() ' 创建测试用的一维字符串数组 Dim fruits() As String = {"Apple", "Banana", "Orange", "Apple", "Grape"} ' 构建 Dictionary 存储键(水果名称)-值(出现频率)映射关系 Dim fruitCounts As New Dictionary(Of String, Integer) ' 遍历整个数组填充上述哈希表 For Each fruit In fruits If Not fruitCounts.ContainsKey(fruit) Then fruitCounts.Add(fruit, 0) End If fruitCounts(fruit) += 1 Next ' 输出结果 For Each pair In fruitCounts Console.WriteLine($"{pair.Key}: {pair.Value}") Next End Sub End Module ``` 在这个实例里,先准备好了待分析的目标——即由几种常见水果组成的列表形式的数据集 `fruits[]` 。之后借助 C# 自带的标准库容器类 `Dictionary<TKey,TValue>` 实施计数过程:每当遇到一个新的条目就新增一条记录至字典之中并将对应的频次设为零;当再次遇见相同的项目时则相应增加一次计数即可[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值