主题:本人写的程序,哪位高手帮我优化一下代码
lengruochen
[专家分:0] 发布于 2008-09-23 17:26:00
本人写了个程序,由于水平太次,算法太原始,当输入文件数据量较大时根本无法实现,哪位高手帮我改进一下算法啊...
最后更新于:2008-09-23 19:35:00
回复列表 (共7个回复)
沙发
wdkshp [专家分:5490] 发布于 2008-09-24 10:36:00
Dim sum1, sum2, aver As Single
最好写成
Dim sum1 As Single, sum2 As Single, aver As Single
我不知道你要完成什么样的任务,因为本人数学基础较差,提一点建议:
你最好将算法优化,先在纸上经过数学处理简单化后再写代码
套用别人的话:
电脑运行速度快,存贮量大,但电脑是给用户使用的,而不是给程序员使用的
板凳
lengruochen [专家分:0] 发布于 2008-09-24 11:27:00
[quote]Dim sum1, sum2, aver As Single
最好写成
Dim sum1 As Single, sum2 As Single, aver As Single
我不知道你要完成什么样的任务,因为本人数学基础较差,提一点建议:
你最好将算法优化,先在纸上经过数学处理简单化后再写代码
套用别人的话:
电脑运行速度快,存贮量大,但电脑是给用户使用的,而不是给程序员使用的[/quote]
我现在头疼的就是不知道怎么优化算法...
3 楼
bcahzvip [专家分:6040] 发布于 2008-09-24 17:32:00
那N次循环,看到后头都大!~
你自己优吧!~
4 楼
lengruochen [专家分:0] 发布于 2008-09-24 17:41:00
[quote]那N次循环,看到后头都大!~
你自己优吧!~[/quote]
我自己不会优化啊,所以才来请教大家的
5 楼
wdkshp [专家分:5490] 发布于 2008-09-25 12:52:00
你最好请教数学系的人
6 楼
老大徒伤悲 [专家分:29120] 发布于 2008-09-25 20:45:00
能力有限,但有时间(例如到国庆)我一定看看。
7 楼
btxdlibin [专家分:2430] 发布于 2008-09-26 20:47:00
说下你的循环问题
For i = 1 To datanum
sum1 = 0
For j = i To datanum
sum2 = 0
sum1 = sum1 + tmp1(j) '这里换掉了个循环
aver = sum1 / (j - i + 1)
For k = i To j
sum2 = sum2 + (tmp1(k) - aver) ^ 2
Next k
data(i, j) = sum2
data(j, i) = data(i, j)
Next j
Next i
'................
':
'四次分割
For i = 1 To datanum - 3
For j = i + 1 To datanum - 2
s(4) = data(1, i) + data(i + 1, j) '←把某些计算放到循环外面
For k = j + 1 To datanum - 1
s(4) = s(4) + data(j + 1, k) + data(k + 1, datanum)
' s(4) = data(1, i) + data(i + 1, j) + data(j + 1, k) + data(k + 1, datanum)'不要浪费时间在重复计算上
If smin(3) > s(4) Then
smin(3) = s(4)
st(1) = 1
ed(1) = i
st(2) = i + 1
ed(2) = j
st(3) = j + 1
ed(3) = k
st(4) = k + 1
ed(4) = datanum
End If
Next k
Next j
Next i
我来回复