如何排序数组中的字符串!

cllc 2003-10-16 01:00:16
我想把一个存有文件名的数组进行排序,应该如何!
不够在加分
...全文
86 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
davidlv 2003-10-16
  • 打赏
  • 举报
回复
dim j as interge,k as interge,ncolindex as string

'再将数组中的值从小到大排序
For j = 1 To UBound(nIndex())
nColIndex = nIndex(j)
For k = j To UBound(nIndex())
If nColIndex > nIndex(k) Then
nIndex(j) = nIndex(k)
nIndex(k) = nColIndex
nColIndex = nIndex(j)
End If
Next k
守城小轩 2003-10-16
  • 打赏
  • 举报
回复
上面是一个写在模块中的函数,你调用就可以了!
守城小轩 2003-10-16
  • 打赏
  • 举报
回复
Option Compare Text '不区分英文字母的大小写
Public Sub Quicksort(sArr() As String, First As Long, Last As Long)
Dim vSplit As String, vT As String
Dim i, j, iRand As Long
If First < Last Then
If Last - First = 1 Then
If sArr(First) > sArr(Last) Then
vT = sArr(First): sArr(First) = sArr(Last): sArr(Last) = vT
End If
Else
iRand = Int(First + (Rnd * (Last - First + 1)))
vT = sArr(Last): sArr(Last) = sArr(iRand): sArr(iRand) = vT
vSplit = sArr(Last)
Do
i = First: j = Last
Do While (i < j) And (sArr(i) <= vSplit)
i = i + 1
Loop
Do While (j > i) And (sArr(j) >= vSplit)
j = j - 1
Loop

If i < j Then
vT = sArr(i): sArr(i) = sArr(j): sArr(j) = vT
End If
Loop While i < j

vT = sArr(i): sArr(i) = sArr(Last): sArr(Last) = vT
If (i - First) < (Last - i) Then
Quicksort sArr(), First, i - 1
Quicksort sArr(), i + 1, Last
Else
Quicksort sArr(), i + 1, Last
Quicksort sArr(), First, i - 1
End If
End If
End If
End Sub
davidlv 2003-10-16
  • 打赏
  • 举报
回复
数组中的每一个元素之间直接比就可以,A(1)>A(2),比出来的结果是这样的
从小到大
a1
a12
ab1

daviddivad 2003-10-16
  • 打赏
  • 举报
回复
给你一个简单但不是最好的例子

窗体上放个LISTBOX,VISIBLE属性设置为FALSE,SORTED属性设置为TRUE

然后把数组中的数据添加到LISTBOX中
DIM I AS INTEGER
LIST1。CLEAR
FOR I= LBOUND(SARR) TO UBOUND(SARR)
LIST1。ADDITEM SARR(I)
NEXT I
LIST1。REFRESH
‘SARR为你的字符串数组

最后把LISTBOX中的数据重新取回就行了
DIM J AS INTEGER
J = 0
FOR I = LBOUND(SARR) TO UBOUND(SARR)
SARR(I) = LIST1。LIST(J)
J= J+1
NEXT I

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧