vb快速排序算法 不明白原理 求教 悬赏100

如题所述

第1个回答  2020-01-23
dim
i
as
long,j
as
long,aa()as
string,t
as
string
'假设数据存放在一个未知长度的数组aa里面
for
i=0
to
ubound(aa)
for
j=0
to
ubound(aa)-i
if
aa(j)>aa(j+1)
then
t=aa(j)
aa(j)=aa(j+1)
aa(j+1)=t
next
j
next
i
'当i循环第一次运行的时候(i=0),j循环从数组aa的第一元素循环到最后一个元素,并将最大值存放在了aa的最后一个元素里面。
'当i循环第二次运行的时候(i=1),只要比较aa数组从第一个元素到倒数第二个元素就可以了,因为倒数第一个元素已经是最大值的元素了。
'当i循环第三次运行的时候(i=2),只要比较aa数组从第一个元素到倒数第三个元素就可以了,因为倒数第一个元素和倒数第二个元素已经是最大值的元素了。
'依此类推,直到i循环aa元素个数次之后,j循环就从aa元素的倒数第一个元素排列到了正数第一个元素
这就是著名的冒泡排序法的递增算法(从小到大排序)。
反之递减算法就是把aa(j)>aa(j+1)换成aa(j)<aa(j+1)
相似回答