易语言数组内容乱序

来源:互联网 发布:ubuntu rm rf 编辑:程序博客网 时间:2024/06/17 21:24

数组去重方法很多,有的方法比较笨而且耗时,这里介绍作者研究的两种好的去重方法,直接上代码,其中数组内容乱序2是根据http://blog.csdn.net/zzqkillyou/article/details/7388690的第三种方法翻译过来,听说他是从C++翻译成java,现在我就从java翻译成易语言,但是我觉得这种方法也不是很好,我想到更好方法(这里没有上代码),基本思路就是我不用2个数组完成任务,而是通过随机置换数组里面的内容完成随机乱序,如果要求不高可以置换数组长度一半,就可以了,这个更节省时间和节省空间耗费,如果乱序厉害点可以置换数组长度次数,而且效果也比较好,这个思路代码好些,也比网上其他方法都更有弹性,可以用C++/java等完成,太监、简单我就对我的思路不上代码了。

.版本 2
.支持库 spec


.程序集 窗口程序集_启动窗口


.子程序 _按钮1_被单击
.局部变量 a, 文本型, , "0"
.局部变量 i, 整数型


a = { “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “10” }


数组内容乱序2 (a)
.计次循环首 (取数组成员数 (a), i)
    调试输出 (a [i])
.计次循环尾 ()


.子程序 数组内容乱序
.参数 需要乱序的数组, 文本型, 数组, 使用前需要置随机数种子
.局部变量 临时数组, 文本型, , "0"
.局部变量 i, 整数型
.局部变量 temp, 整数型
.局部变量 j, 整数型
.局部变量 tmp, 整数型


临时数组 = 需要乱序的数组
j = 1
.变量循环首 (1, 取数组成员数 (临时数组), 1, i)
    tmp = 取随机数 (1, 取数组成员数 (临时数组))
    需要乱序的数组 [j] = 临时数组 [tmp]
    删除成员 (临时数组, tmp, )
    j = j + 1
    处理事件 ()
.变量循环尾 ()




.子程序 __启动窗口_创建完毕


置随机数种子 ()




.子程序 数组内容乱序2
.参数 需要乱序的数组, 文本型, 数组, 使用前需要置随机数种子
.局部变量 数组长度, 整数型
.局部变量 索引, 整数型
.局部变量 当前位置, 整数型
.局部变量 临时数组, 文本型, , "0"
.局部变量 k, 整数型
.局部变量 r, 整数型


临时数组 = 需要乱序的数组
数组长度 = 取数组成员数 (需要乱序的数组)
索引 = 0
k = 1
当前位置 = 0
.循环判断首 ()
    r = 数组长度 - 索引
    当前位置 = 取随机数 (1, r)
    需要乱序的数组 [k] = 临时数组 [当前位置]
    k = k + 1
    临时数组 [当前位置] = 临时数组 [r]
    索引 = 索引 + 1
.循环判断尾 (索引 < 数组长度)