请问如何将一个数组的元素按条件分到不同的新数组中
时间: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 编辑 ]
已知数组数值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, ?) 无法选定合适的参数。
用循环,按四个条件分别过滤一遍。
不管是10个还是10亿个,都一样处理。
话说,10亿个数值的数组,你无法定义吧,超过记忆储存量了吧。
我的电脑仅仅能定义10^7 即1000万个值的数组。
思考方法-2,用过滤,但是过滤只能作文字列操作。无法实现。
= Filter(arr, ?) 无法选定合适的参数。
作者: 香川群子 发布时间: 2011-08-12
是呀,在建立200个元素随机抽取5个元素的组合的数组时,无法建立。有解决的方案吗?
不过我的机器貌似可以定义不大于5000万个元素的数组,但未知全过程运行需要多少时间
[ 本帖最后由 yahaa_L 于 2011-8-12 12:06 编辑 ]
不过我的机器貌似可以定义不大于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
注:不使用二维数组定义
如何使用循环建立多个数组?,如:
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
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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28