+ -
当前位置:首页 → 问答吧 → 请问如何将一个数组的元素按条件分到不同的新数组中

请问如何将一个数组的元素按条件分到不同的新数组中

时间:2011-08-12

来源:互联网

请问:
已知数组数值a(1,5,5,2,3,8,12,1,3,2.5,0.221,6,7,5.5,......)
求:将上述数组的全部元素按条件[0,4],(4,8],(8,20],(20,+∞),分别赋值新数组a1(),a2(),a3(),a4()。

另外,若分组条件的不是固定值,且分组条件有i个,请问建立新数组时可否根据i值分别建立新数组ai()?



注:需数组a()的量可能非常大,其容量极端情况可能超10亿个。

[ 本帖最后由 yahaa_L 于 2011-8-12 11:21 编辑 ]

作者: yahaa_L   发布时间: 2011-08-12

在线等待中......
请高手赐教!!!

作者: yahaa_L   发布时间: 2011-08-12

思考方法-1:
用循环,按四个条件分别过滤一遍。
不管是10个还是10亿个,都一样处理。

话说,10亿个数值的数组,你无法定义吧,超过记忆储存量了吧。

我的电脑仅仅能定义10^7 即1000万个值的数组。


思考方法-2,用过滤,但是过滤只能作文字列操作。无法实现。
= Filter(arr, ?) 无法选定合适的参数。

作者: 香川群子   发布时间: 2011-08-12

是呀,在建立200个元素随机抽取5个元素的组合的数组时,无法建立。有解决的方案吗?
不过我的机器貌似可以定义不大于5000万个元素的数组,但未知全过程运行需要多少时间

[ 本帖最后由 yahaa_L 于 2011-8-12 12:06 编辑 ]

作者: yahaa_L   发布时间: 2011-08-12

请问:

如何使用循环建立多个数组?,如:
for i =1 to 5
    这里的语句怎么写?,要达到生成 arr1,arr2,arr3,arr4,arr5的效果,即生成5个数组(我的想法是arr & i ,但是不能运行)
next
然后我才能分别对每个数组赋值

总之,就是用变量来产生数组名称
for i = 5
    arr i      (arr1,arr2,arr3,arr4,arr5,该怎么写?)
next

注:不使用二维数组定义

作者: yahaa_L   发布时间: 2011-08-12

测试代码如下:

Sub test()
    Dim a0(100), a1(100), a2(100), a3(100), a4(100)
    a = Application.Transpose([a1:a15])
   
    For i = 1 To UBound(a)
        If a(i) < 0 Then
            a0(n0) = a(i)
            n0 = n0 + 1
        ElseIf a(i) <= 4 Then
            a1(n1) = a(i)
            n1 = n1 + 1
        ElseIf a(i) <= 8 Then
            a2(n2) = a(i)
            n2 = n2 + 1
        ElseIf a(i) <= 20 Then
            a3(n3) = a(i)
            n3 = n3 + 1
        Else
            a4(n4) = a(i)
            n4 = n4 + 1
        End If
    Next
End Sub

作者: 香川群子   发布时间: 2011-08-12