好东东 分享一下:使用起泡法按照时间排列文件
Function qipaosorting(path)
'path = "D:\spreadtrum magazine\"
Set FSO = Server.CreateObject("Scripting.FileSystemObject") 'FSO对象
Set FD = FSO.GetFolder(path) '获得文件夹
Set F = FD.Files '获得文件夹内文件
For Each OneFile in F '列出所有的htm文件
filename = OneFile.Name
If LCase(right(filename,3)) = "htm" Then '只对htm文件处理
filename_arr0 = filename_arr0 & Left(filename,Len(filename)) & "|" '获得主文件名,保存在变量中,0|0|形式
filename_arr1 = filename_arr1 & DateValue(OneFile.datelastmodified) & "|" '获得文件最后修改日期
End If
Next
filename_arr0 = split(filename_arr0,"|") '转化为文件名数组
filename_arr1 = split(filename_arr1,"|") '转化为日期数组
'把文件名和时间按照顺序加入二维数组
dim filename_arr()
redim filename_arr(ubound(filename_arr0),2) '重新定义
for i = 0 to ubound(filename_arr0) - 1
filename_arr(i,0) = filename_arr0(i)
filename_arr(i,1) = filename_arr1(i)
next
erase filename_arr0 '删除数组
erase filename_arr1
'------按照时间的顺序使用起泡法排列数组------
for j = 0 to ubound(filename_arr) - 1
for i = 0 to ubound(filename_arr) - 1 - j
if DateDiff("d",filename_arr(i,1),filename_arr(i+1,1)) > 0 Then '判断时间先后,如果比后面的晚,交换数据
'if filename_arr(i,1)<filename_arr(i+1,1) Then '这个只能判断字符,而不能判断时间
'换前后书内容--文件名
temp = filename_arr(i,0)
filename_arr(i,0) = filename_arr(i + 1,0)
filename_arr(i+1,0) = temp
'交换前后数组内容--建立时间
temp = filename_arr(i,1)
filename_arr(i,1) = filename_arr(i + 1,1)
filename_arr(i + 1,1) = temp
end if
next
next
'------结束起泡法------
qipaosorting = filename_arr '返回二维数组
End Function '结束函数
问题点数:20、回复次数:8Top
1 楼znjgress(四空和尚)回复于 2006-03-14 10:35:03 得分 0
没有人看 哎...............Top
2 楼superdullwolf(超级大笨狼,每天要自强,MVP)回复于 2006-03-14 11:05:04 得分 20
'***********************************************************
sub sortA( Arr)
'堆排序,复杂度n*log(n)/log(2),如果8个数就是24次,如果用冒泡是8^2=64次
dim n,i,L,ir,rArr,j
n = ubound(Arr) '7,8个元素
L = int(n / 2)+1
ir = n
do
if L > 1 then
L = L - 1
rArr = Arr(L)
else
rArr = Arr(ir)
Arr(ir) = Arr(1)
ir = ir - 1
if ir = 1 then
Arr(1) = rArr
exit sub
end if
end if
i = L
j = 2 * L
while j <= ir
if j < ir then
if Arr(j) < Arr(j + 1) then j = j + 1
end if
if rArr < Arr(j) then
Arr(i) = Arr(j)
i = j
j = 2 * j
else
j = ir + 1
end if
wend
Arr(i) = rArr
loop
end sub
'***********************************************************
sub D2Arr(D,ArrI)
'字典Item转化为数组
dim i,Dcount,Arr
Arr = D.Items
Dcount = D.Count
redim ArrI(Dcount)
for i=0 to Dcount-1
ArrI(i+1)= Arr(i)
next
end sub
'***********************************************************
Top
3 楼superdullwolf(超级大笨狼,每天要自强,MVP)回复于 2006-03-14 11:05:49 得分 0
'***********************************************************
sub sortA( Arr)
'堆排序,复杂度n*log(n)/log(2),如果8个数就是24次,如果用冒泡是8^2=64次
dim n,i,L,ir,rArr,j
n = ubound(Arr) '7,8个元素
L = int(n / 2)+1
ir = n
do
if L > 1 then
L = L - 1
rArr = Arr(L)
else
rArr = Arr(ir)
Arr(ir) = Arr(1)
ir = ir - 1
if ir = 1 then
Arr(1) = rArr
exit sub
end if
end if
i = L
j = 2 * L
while j <= ir
if j < ir then
if Arr(j) < Arr(j + 1) then j = j + 1
end if
if rArr < Arr(j) then
Arr(i) = Arr(j)
i = j
j = 2 * j
else
j = ir + 1
end if
wend
Arr(i) = rArr
loop
end sub
'***********************************************************
Top
4 楼znjgress(四空和尚)回复于 2006-03-14 13:12:36 得分 0
呵呵
笨狼老大
老大还是老大.Top
5 楼chzxq(毛毛鼠)回复于 2006-03-14 14:58:08 得分 0
学习啊,以前一直用冒泡效率太底了!Top
6 楼znjgress(四空和尚)回复于 2006-03-15 12:54:11 得分 0
Top
Top
7 楼wangrutie(wangrutie)回复于 2006-03-15 16:41:18 得分 0
upTop
8 楼wangflove(沙尘暴:学吧,学死算了!)回复于 2006-03-16 00:02:07 得分 0
关注一下。Top




