易语言数组内容乱序
數組去重方法很多,有的方法比較笨而且耗時,這里介紹作者研究的兩種好的去重方法,直接上代碼,其中數組內容亂序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
.循環判斷尾 (索引 < 數組長度)
總結
- 上一篇: 易语言随机取a b c,易语言取随机数5
- 下一篇: 旅游网站页面