写了个用VBScript实现的快速排序的算法

该算法参考的严蔚敏老师97版 C语言版的快排算法(没有做枢轴的优化),使用了递归调用的方式。

代码经调试运行无误(控制台程序)。

 
  
1 Dim arr
2   Dim low
3 Dim high
4 arr = Array ( 1 , 99 , 58.32 , 8 , 7 , 3 , 4.18 , 2 , 6 , 14 , 65 , 9 , 23 , 43 , 78 , 9 )
5
6 low = Lbound (arr)
7 high = Ubound (arr)
8
9 ' ===调用快速排序===
10 QuickSort arr,low,high
11
12 For i = 0 to Ubound (arr)
13 Response.Write(arr(i) & "    " )
14 Next
15
16 ' ===========用VBScript实现快速排序======开始============
17 ' Author:falconshh 2011.05.30
18 ' arr:待排数组,下标从0....n-1
19 ' low:数组最低端下标
20 ' high:数组最高端下标
21 Sub QuickSort(arr,low,high)
22 Dim pivotPos ' 枢轴位置
23 If low < high Then
24 pivotPos = CInt (Partition(arr,low,high))
25 QuickSort arr,low,pivotPos - 1 ' 对低端子数组排序
26 QuickSort arr,pivotPos + 1 ,high ' 对高端子数组排序
27 End if
28 End Sub
29
30 ' 分割数据
31 Function Partition(arr,low,high)
32 Dim pivot ' 定义枢轴
33 pivot = arr(low) ' 取第一个记录作为枢轴
34 i = low
35 j = high
36
37 Do While (i < j)
38 Do While (i < j and arr(j) >= pivot)
39 j = j - 1
40 Loop
41
42 arr(i) = arr(j) ' 将枢轴移到低端
43
44 Do While (i < j and arr(i) <= pivot)
45 i = i + 1
46 Loop
47 arr(j) = arr(i) ' 将枢轴移到高端
48 Loop
49
50 arr(i) = pivot ' 将枢轴放置到正确的位置(中间点)
51 Partition = i ' 返回枢轴的位置
52 End Function
53 ' ===========用VBScript实现快速排序======结束============

排序结果如下:

1  2  3  4.18  6  7  8  9  9  14  23  43  58.32  65  78  99  

转载于:https://www.cnblogs.com/falconshh/archive/2011/05/30/2063204.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值