标题:请教ASP数组排序的问题,先谢谢大家咯~
只看楼主
题解
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-8-14
 问题点数:0 回复次数:6 
请教ASP数组排序的问题,先谢谢大家咯~
已知数值数组ary()求一段代码对ary()从小到大排序,
然后输出为paixu()

我很菜,从网上看了很多排序代码,没明白
特跑到贵地来请大家赐教啊
搜索更多相关主题的帖子: ASP ary paixu 数值 
2005-08-14 23:11
toolag
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2005-7-30
得分:0 
已知数值数组ary()求一段代码对ary()从小到大排序, 然后输出为paixu() 我很菜,从网上看了很多排序代码,没明白 特跑到贵地来请大家赐教啊
这里何尝不是"网上", 没明白就继续研究呀 'Clng() should be remove for normal use 'Quick Sort ASP CODE: Sub SortRun(ByRef pData,pLeft,pRight) Dim i,j,middle,iTemp i = pLeft j = pRight middle = Clng(pData((pLeft+pRight)/2)) '求中间值 While i <= j While (Clng(pData(i))<middle) AND (i<pRight)'从左扫描大于中值的数 i = i + 1 Wend While (Clng(pData(j))>middle) AND (j>pLeft)'从右扫描大于中值的数 j = j - 1 Wend If i<=j Then'找到了一对值 '交换 iTemp = Clng(pData(i)) pData(i) = Clng(pData(j)) pData(j) = iTemp i = i + 1 j = j - 1 End If Wend'如果两边扫描的下标交错,就停止(完成一次) '当左边部分有值(pLeft<j),递归左半边 If pLeft<j Then Call SortRun(pData,pLeft,j) End If '当右边部分有值(pRight>i),递归右半边 If pRight>i Then Call SortRun(pData,i,pRight) End If End Sub Sub QuickSort(ByRef pData)'快速排序 Call SortRun(pData,0,ubound(pData)) End Sub

[此贴子已经被作者于2005-8-14 23:28:14编辑过]


VB, Delphi, ASP, PHP, JSP, .NET MS SQL, My SQL, Oracle Diablo, StarCraft, WarCraft, World of Warcraft
2005-08-14 23:24
题解
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-8-14
得分:0 
谢谢版主,我看看先,这里的气氛不错哈~
2005-08-15 08:59
题解
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-8-14
得分:0 
版主帮我看下
用下面这个排序函数
最后排的为什么9必20要大?它好像只排第一位的数字的,这个函数是不是有问题啊?

Function Sort(ary)
KeepChecking = TRUE
Do Until KeepChecking = FALSE
KeepChecking = FALSE
For I = 0 to UBound(ary)
If I = UBound(ary) Then Exit For
If ary(I) &gt; ary(I+1) Then
FirstValue = ary(I)
SecondValue = ary(I+1)
ary(I) = SecondValue
ary(I+1) = FirstValue
KeepChecking = TRUE
End If
Next
Loop
Sort = ary
End Function

我是这样调用的
dim paixu
paixu=myarray
paixu=sort(paixu)

[此贴子已经被作者于2005-8-15 15:32:35编辑过]


2005-08-15 15:28
题解
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-8-14
得分:0 
问题解决啦~ 我觉的这个排序函数比较好用哈~ Function Sort(ary) KeepChecking = TRUE Do Until KeepChecking = FALSE KeepChecking = FALSE For I = 0 to UBound(ary) If I = UBound(ary) Then Exit For If Clng(ary(I)) > Clng(ary(I+1)) Then FirstValue = ary(I) SecondValue = ary(I+1) ary(I) = SecondValue ary(I+1) = FirstValue KeepChecking = TRUE End If Next Loop Sort = ary End Function
2005-08-15 19:40
toolag
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2005-7-30
得分:0 
比较的时候, 注意 数组元素 的类型 即可

VB, Delphi, ASP, PHP, JSP, .NET MS SQL, My SQL, Oracle Diablo, StarCraft, WarCraft, World of Warcraft
2005-08-15 22:14
hxfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:5807
专家分:108
注 册:2005-4-7
得分:0 
不错
比较典型的排序方法是二分法和冒泡法

ASP在这点上和C,JAVA语言是相通的

2005-08-16 17:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-25137-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.151562 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved