swift扩展数组shuffle函数,随机排序数组

17-09-05 11:20 字数 261 阅读 4987 已编辑

大家都知道phpshuffle函数可以很方便的随机排序一个数组,下面分享一个swiftshuffle函数,用于随机排序一个数组。

extension Array{
    public func shuffle() -> Array {
        var list = self
        for index in 0..<list.count {
            let newIndex = Int(arc4random_uniform(UInt32(list.count-index))) + index
            if index != newIndex {
                swap(&list[index], &list[newIndex])
            }
        }
        return list
    }
}

// 生成一个数组
var arr = Array<Int>();
arr.append(contentsOf: 1...10)
arr.shuffle()
// 输出结果如下
// [10, 6, 3, 5, 4, 2, 8, 1, 9, 7]

另一种方法排序数组的方法

let arrShuffle = arr.sorted() {(_,_) -> Bool in
    arc4random() < arc4random()
}
print(arrShuffle)
// 输出如下
// [6, 2, 3, 5, 4, 1, 7, 8, 9, 10]

这种是最简单的方法,利用一个闭包函数排序数组。但是这种方法无论效率还是可拓展性上都不如第一种方法。

0人点赞>
关注 收藏 改进 举报
1 条评论
排序方式 时间 投票
草芥

加油

请登录后发表评论
站长 @ 十七度
文章
380
粉丝
23
喜欢
190
收藏
31
排名 : 1
访问 : 127.8万
私信