起泡法按照時間排列檔案(FSO)(修正) (轉)

amyz發表於2007-11-13
起泡法按照時間排列檔案(FSO)(修正) (轉)[@more@]本站的.cn/collection.">使用按照時間排列的,後來想到如果按照檔案建立的時間為順序排列,那就太棒了。幸好學過C語言,起泡法只是一個簡單的演算法而已,但是在網頁中要用到什麼演算法的還是比較少的,我已經用過的演算法只有遞迴和起泡法。有問題大家多多指點。這種演算法好像不是很高。不知道有沒有更好的辦法。

'######################################'
'##  Copyright (C) 醉雨梧桐 All rights reserved.  ##'
'##  Powered by 醉雨梧桐  ##'
'##    ##'
'##  to:winterfire@163.com">winterfire@163.com  ##'
'######################################'
Function file_list(path)
  Set =Server.Create("Scripting.FileSystemObject")  'FSO
  Set FD=FSO.GetFolder(path)  '獲得資料夾
  Set F=FD.Files  '獲得資料夾內檔案
  For Each OneFile in F  '列出所有的txt檔案
  filename=OneFile.Name
  If LCase(right(filename,3))="txt" Then  '只對txt
  filename_arr0=filename_arr0&Left(filename,Len(filename)-4)&"|"  '獲得主檔名,儲存在變數中,0|0|形式
  filename_arr1=filename_arr1&DateValue(OneFile.DateCreated)&"|"  '獲得檔案建立日期
 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)  '交換前後陣列內容--檔名
  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
'------結束起泡法------
  file_list=filename_arr '返回二維陣列
End Function  '結束

file_arr=file_list("g:my documentstxt")  '函式返回二維陣列
for i=0 to ubound(file_arr)-1
  Response.Write(file_arr(i,0)&"--"&file_arr(i,1)&"
") '輸出結果
next
%>


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-982127/,如需轉載,請註明出處,否則將追究法律責任。

相關文章