易语言鸡尾酒排序

511遇见

排序过程:

1、先对数组从左到右进行冒泡排序(升序),则最大的元素去到最右端
2、再对数组从右到左进行冒泡排序(降序),则最小的元素去到最左端
3、以此类推,依次改变冒泡的方向,并不断缩小未排序元素的范围,直到最后一个元素结束

易语言鸡尾酒排序源码:

.版本 2
 
.子程序 鸡尾酒排序
.参数 array, 整数型, 数组
.局部变量 l, 整数型
.局部变量 r, 整数型
.局部变量 lt, 逻辑型
.局部变量 q, 整数型
.局部变量 ls, 整数型
.局部变量 m1, 整数型
 
l = 1
r = 取数组成员数 (array)
.计次循环首 (取数组成员数 (array), )
    .如果 (lt = 假)
        q = l
        ls = array [q]
        .变量循环首 (l + 1, r, 1, m1)
            .如果真 (ls > array [m1])
                ls = array [m1]
                q = m1
            .如果真结束
 
        .变量循环尾 ()
        swap (array [l], array [q])  ' 交换两个成员的值
        l = l + 1
 
    .否则
 
        q = r
        ls = array [q]
        .变量循环首 (r - 1, l, -1, m1)
            .如果真 (ls < array [m1])
                ls = array [m1]
                q = m1
            .如果真结束
 
        .变量循环尾 ()
        swap (array [r], array [q])  ' 交换两个成员的值
        r = r - 1
    .如果结束
    lt = 取反 (lt)
.计次循环尾 ()

交换变量

 
.子程序 swap, , 公开, 用一个临时变量把 两个变量互相更换
.参数 c1, 整数型, 参考
.参数 c2, 整数型, 参考
.局部变量 m, 整数型
m = c1
c1 = c2
c2 = m

发布日期:

所属分类: 易语言 标签: