怎样把两个数组合并为一个?用VB写?好心人帮忙啦,急用!最好用插入法写的。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样把两个数组合并为一个?用VB写?好心人帮忙啦,急用!最好用插入法写的。相关的知识,希望对你有一定的参考价值。
Private Sub Command1_Click()Dim a(1 To 10), b(1 To 10), c(1 To 20)
Randomize
For i = 1 To 10
a(i) = Int(Rnd * 100)
b(i) = Int(Rnd * 100)
Next i
For i = 1 To 9
For j = 10 To i + 1 Step -1
If a(i) > a(j) Then d = a(i): a(i) = a(j): a(j) = d
If b(i) > b(j) Then d = b(i): b(i) = b(j): b(j) = d
Next j, i
For i = 1 To 10
Print a(i);
Next i
For i = 1 To 10
Print b(i);
Next i
'下面就是合并过程
j = 1
For i = 1 To 10
Do
If a(i) < b(j) Then
k = k + 1
c(k) = a(i)
Exit Do
Else
k = k + 1
c(k) = b(j)
j = j + 1
If j > 10 Then Exit For
End If
Loop
Next i
If i <= 10 Then
For n = i To 10
k = k + 1
c(k) = a(n)
Next n
End If
If j <= 10 Then
For n = j To 10
k = k + 1
c(k) = b(n)
Next n
End If
'合并结束
For i = 1 To 20
Print c(i);
Next i
End Sub
Private Sub Form_Load()
Me.AutoRedraw = True
End Sub 参考技术A 具体的代码就不写了
说一说方法吧
弄一个动态数组,先测一测第一个数组的长度,然也测一测第二个数组的长度,让第一个数组中的数据都填到动态数组,第二个数组第一个数填到动太数组第一个数组长度加1,直到第二个数组数据都填完就可以了追问
可否帮忙看一下这个程序为什么会一直显示下标越界
Dim a() As Variant, b() As Variant
a(i) = Array(2, 4, 6, 8)
b(j) = Array(1, 3, 5, 7)
n = UBound(a)
m = UBound(b)
For k = LBound(a) To UBound(a)
For j = LBound(b) To UBound(b)
x = b(j)
Next j
If x < a(k) Then
ReDim Preserve a(n + 1)
For i = n To k Step -1
a(i + 1) = a(i)
Next i
End If
Next k
在 Swift 中将两个数组合并为一个字典
【中文标题】在 Swift 中将两个数组合并为一个字典【英文标题】:Combine two arrays to one dictionary in Swift 【发布时间】:2021-05-12 13:55:59 【问题描述】:我有两个数组:
let data = ["12 Mai 2021", "12 Mai 2021"]
let prices = [45.0, 50.0]
现在我想将这两个转换为一个字典,如下所示:
["12 Mai 2021":45.0, "12 Mai 2021":50.0]
如果输出可以是:
[("12 Mai 2021",45.0),("12 Mai 2021",50.0)]
但我不知道这是否可能...... 在这个板上,我已经偶然发现了“zip”解决方案,如下所示:
var dictionary = [String: Double]()
zip(data, prices).forEach dictionary[$0] = $1
print(dictionary)
但这只是打印出来的:
["12 Mai 2021": 50.0]
有人知道可行的解决方案吗?提前谢谢!
【问题讨论】:
12 Mai 2021
是同一日期。第二个将覆盖第一个。
在字典中,键是唯一的,这就是你有“问题”的原因。 ["12 Mai 2021":45.0, "12 Mai 2021":50.0]
不存在。
zip(data, prices).map( ($0.0, $0.1) )
?
Larne 非常感谢您解决了这两个问题!
@Larme map
后面的 zip
是不需要的。 zip
已经返回了 map
正在创建的相同元组!
【参考方案1】:
你说你想要这个Dictionary
:
["12 Mai 2021":45.0, "12 Mai 2021":50.0]
但那是不可能的。 Dictionary
中的每个键都必须是唯一的。密钥"12 Mai 2021"
不能使用两次。
然后你说你更喜欢这个“输出”:
[("12 Mai 2021",45.0),("12 Mai 2021",50.0)]
这是一组对(2 元组),您可以使用 zip
得到答案:
let pairs = zip(data, prices).map $0
// Type of pairs is [(String, Double)].
如果您真的想要Dictionary
,那么您必须决定如何处理重复键。也许您希望每个日期键映射到该日期价格的 array。这是一种方法:
let d = Dictionary(zip(data, prices.map [$0] )) $0 + $1
// Result: ["12 Mai 2021": [45.0, 50.0]]
上面的代码就是这样做的。
prices.map [$0]
将prices
从[Double]
转换为[[Double]]
,即转换为Double
的数组数组,其中每个内部数组仅包含一个价格:[[45.0], [50.0]]
。
zip
将日期和单价数组组合成对:[("12 Mai 2021", [45.0]), ("12 Mai 2021", [50.0])]
。
Dictionary
初始化程序将数组对转换为 [String: [Double]]
。当它找到重复键时,它使用闭包 $0 + $1
组合相应的值。这里,$0
和 $1
都是 [Double]
,所以闭包连接了数组。
【讨论】:
字典初始化程序中缺少右括号。另一种选择是将+
运算符作为uniquingKeysWith 参数Dictionary(zip(data, prices.map [$0] ), uniquingKeysWith: +)
我添加了缺少的关闭括号。这就是您不复制和粘贴代码时会发生的情况。以上是关于怎样把两个数组合并为一个?用VB写?好心人帮忙啦,急用!最好用插入法写的。的主要内容,如果未能解决你的问题,请参考以下文章