vb 数组 排列

A=Array(4,35,1)从小到大排列之后不要1,4,35这样的值而是取原数组位置312告诉我原数组的哪个位置最小哪个位置最大将原数组里面的值排序之后告诉我这个值在原... A = Array(4,35,1)
从小到大排列之后 不要 1,4,35这样的值

而是取原数组位置
3 1 2 告诉我原数组的哪个位置最小 哪个位置最大
将原数组里面的值排序之后
告诉我 这个值在原数组的位置

A = Array(4,35,1,35,55)
得到
3 1 2 4 5

再例如
s1 = 3
s2 = 5
s3 = 2
s4 = 3
s5 =12
排序之后 得到 s3 s1 s4 s2 s5

能不能给出个代码 谢谢
展开
 我来答
网海1书生
科技发烧友

2009-12-18 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
假定要排序的数组是a(),那么可以用动态数组建一个相同大小的b(),并且用从1递增给b()赋值,即b(0)=1 b(1)=2 ... b(n)=n+1。然后在给a()排序时,b()也同步改变顺序,比如 a(34)=56,a(35)=38,a(35)比a(34)小,两个数互换位置,而b(34)和b(35)也同步互换位置。这样,当a()排序完毕后,b()所记录的数,就是a()中各数在排序前的位置了。明白了么?

附代码如下,供参考:

Private Sub Form_Click()
Dim a(), b()
Dim aa As Long, bb As Long
Dim i As Long, j As Long
a = Array(23, 45, 67, 39, 1, 9, 77, 25, 64, 33, 89, 10)
Print "排序前数据:";
For i = 0 To UBound(a)
Print a(i); " ";
Next
Print
ReDim b(UBound(a))
For i = 0 To UBound(b)
b(i) = i + 1
Next
For j = UBound(a) - 1 To 1 Step -1
For i = 0 To j
If a(i) > a(i + 1) Then
aa = a(i)
a(i) = a(i + 1)
a(i + 1) = aa
bb = b(i)
b(i) = b(i + 1)
b(i + 1) = bb
End If
Next
Next
Print "排序后数据:";
For i = 0 To UBound(a)
Print a(i); " ";
Next
Print
Print "在原数组位置:";
For i = 0 To UBound(b)
Print b(i); " ";
Next
End Sub
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式