|
本帖最后由 imath 于 2016-7-12 21:23 编辑
数组中元素排序是常见的一个算法,效率高的有二分法等等,效率低的有冒泡法、选择排序法。由于之前写iElement程序需要用到,我写了一个较为简单的计算器冒泡排序法,代码如下:
- Define sortx(t)=
- Func
- Local n,temp,i,j
- n:=dim(t)
- For i,1,n-1
- For j,1,n-1
- If t[j]<t[j+1] Then
- temp:=t[j]
- t[j]:=t[j+1]
- t[j+1]:=temp
- EndIf
- EndFor
- EndFor
- Return t
- EndFunc
复制代码 大致原理是,若有1~n个元素,第i个和第i+1个元素进行大小比较,如果前者更小,那么交换两者的位置。i从1取到n-1 (一共比较n-1次)。
然后重复执行n-1次。
运行效果(实现降序排序):
算法举例:
排序:1,3,2,5
4个元素,进行3轮比较
第1轮:
3,1,2,5 (第1个和第2个比较,前者比后者小,所以交换)
3,2,1,5 (第2个和第3个比较,前者比后者小,所以交换)
3,2,5,1 (第3个和第4个比较,前者比后者小,所以交换)
第2轮:
3,2,5,1 (第1个和第2个比较,前者比后者大,所以不变)
3,5,2,1 (第2个和第3个比较,前者比后者小,所以交换)
3,5,2,1 (第3个和第4个比较,前者比后者大,所以不变)
第3轮:
5,3,2,1 (第1个和第2个比较,前者比后者大,所以不变)
5,3,2,1 (第2个和第3个比较,前者比后者大,所以不变)
5,3,2,1 (第3个和第4个比较,前者比后者大,所以不变)
这样就实现了降序排序
|
|