易语言地精排序

Here is how a garden gnome sorts a line of flower pots. Basically, he looks at the flower pot next to him and the previous one; if they are in the right order he steps one pot forward, otherwise he swaps them and steps one pot backwards. Boundary conditions: if there is no previous pot, he steps forwards; if there is no pot next to him, he is done.
—Dick Grune

属于稳定的排序算法。算法的思想是每趟循环找到第一个逆序的元素,把它和在它前面的已排序的元素逐个进行比较、交换,有点像插入排序。

易语言地精排序

.版本 2

.子程序 Gnome排序
.参数 array, 整数型, 数组
.局部变量 m, 整数型
.局部变量 t, 整数型
.局部变量 temp, 整数型
.局部变量 l, 整数型

t = 取数组成员数 (参数组)
.如果真 (t ≤ 0)
返回 ()
.如果真结束
l = -1
.判断循环首 (m ≤ t)
.如果 (m > 1 且 temp < 参数组 [m - 1])
.如果真 (l = -1)
l = m
.如果真结束
参数组 [m] = 参数组 [m - 1]
m = m - 1
.否则
.如果 (l = -1)
m = m + 1
.否则
参数组 [m] = temp
m = l + 1
l = -1
.如果结束
.如果 (m ≤ t)
temp = 参数组 [m]
.否则

.如果结束
.如果结束
.判断循环尾 ()


发布日期:

所属分类: 易语言 标签: