怎样把两个数组合并为一个?用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
Print
For i = 1 To 10
Print b(i);
Next i
Print

'下面就是合并过程
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
Print
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写?好心人帮忙啦,急用!最好用插入法写的。的主要内容,如果未能解决你的问题,请参考以下文章

Java中如何把两个数组合并为一个

如何将两个有序数组合并为一个有序数组,用函数做,一个循环搞定?

两个数组交叉合并为一个数组

怎么用c语言将两个数组并起来?

Python版将两个有序数组合并为一个有序数组

JAVA怎么合并两个数组