我有一个这样的txt数组:
我已设法使用冒泡排序对此数组进行排序,选择第二组数字" 001,001,002,002,003 ...."但我也想用第一组数字排序。结果如下:
我知道如何构建冒泡排序吗? 我需要在我的常规冒泡排序中使用新的For循环吗?
当前代码(这将仅基于第二组数字排序)。 104 =最后一组数字的位置
For i = 1 To UbndCellDataExcel - 1
For j = i + 1 To UbndCellDataExcel
If Mid(CellDataExcel(i), 104, 3) > Mid(CellDataExcel(j), 104, 3) Then
strTemp = CellDataExcel(i)
CellDataExcel(i) = CellDataExcel(j)
CellDataExcel(j) = strTemp
End If
Next j
Next i
答案 0 :(得分:0)
解决方案的关键是比较功能:
有两种主要方法可以做到这一点: 第一个也是最简单的是 - 创建一个新数字并按其排序
convert "Unique text |05||001|" to "00105"
convert "Unique text |04||002|" to "00204"
00204>00105 so "Unique text |04||002|" > "Unique text |05||001|"
更正确,更复杂的事情就是简单地进行2次比较:
Function compare (ByVal i As String,ByVal j As String)
i1=getParam(1,i)
i2=getParam(2,i)
j1=getParam(1,j)
j1=getParam(2,j)
if (i1>j1) return 1
if (i2<j2) return -1
if (j1>j1) return 1
if (j2<j2) return -1
return 0
其中getParam
是&#34;独特文本| 04 || 002 |&#34;并返回&#34; 04&#34;或&#34; 002&#34;。
答案 1 :(得分:0)
谢谢מתןל!这就是我现在根据您的转换想法实现的:
convert "Unique text |05||001|" to "00105"
convert "Unique text |04||002|" to "00204"
我的代码现在看起来像这样(100 =第一组数字的位置,104是第二组数字):
For i = 1 To UbndCellDataExcel - 1
For j = i + 1 To UbndCellDataExcel
If Mid(CellDataExcel(i), 104, 3) & Mid(CellDataExcel(i), 100, 2) > Mid(CellDataExcel(j), 104, 3) & Mid(CellDataExcel(j), 100, 2) Then 'Sorter basert på OUnr
strTemp = CellDataExcel(i)
CellDataExcel(i) = CellDataExcel(j)
CellDataExcel(j) = strTemp
End If
Next j
Next i
'Mid(CellDataExcel(i), 104, 3) & Mid(CellDataExcel(i), 100, 2) returns Format: "00105"