2,749
社区成员
发帖
与我相关
我的任务
分享用冒泡法:
DIMENSION Tr(10)
FOR i=1 TO ALEN(Tr)-1
FOR x=i+1 TO ALEN(Tr)
IF Tr(i)<Tr(x)
Temp=Tr(i)
Tr(i)=Tr(x)
Tr(x)=temp
ENDIF
ENDFOR
ENDFOR
RAND(-1)
#DEFINE N1 10 && 数组个数
DIMENSION Ary1[N1]
FOR i=1 TO N1
Ary1[i] = INT(RAND()*100)
?Ary1[i]
ENDFOR
?" QuickSort"
QuickSort(@Ary1,1,N1)
FOR i=1 TO N1
?Ary1[i]
ENDFOR
FUNCTION QuickSort
PARAMETERS Ary[N1],Left1,Right1
LOCAL L1,R1,Flag1,Tmp
IF Left1 >= Right1
RETURN
ENDIF
L1 = Left1
R1 = Right1
Flag1 = Ary[Left1]
DO WHILE L1 < R1
*!* 先从右边找
DO WHILE Ary[R1] >= Flag1 AND L1 < R1
R1 = R1 -1
ENDDO
*!* 再从左边找
DO WHILE Ary[L1] <= Flag1 AND L1 < R1
L1 = L1 +1
ENDDO
*!* 交换数据
IF L1 < R1
Tmp = Ary[L1]
Ary[L1] = Ary[R1]
Ary[R1] = Tmp
ENDIF
ENDDO
*!* 递归交换
Ary[Left1] = Ary[L1]
Ary[L1] = Flag1
QuickSort(@Ary,Left1,R1-1)
QuickSort(@Ary,L1+1,Right1)
ENDFUNC