Swift-猴子排序

猴子排序 (Bogo Sort) 是个本质上是一个随机洗牌算法,不实用而且和原始,简单过程就是不断的对数组进行洗牌,一直到洗牌为有序为止,理想状况是一次成功,最差时间是无限,慎重使用,过程供参考.
核心代码:
<pre><code>` func sort(arr:inout [Int]) {
if arr.count == 0 {
return
}

    var sorted:Bool = isSorted(arr: arr)
    while sorted == false {
        shuffle(arr: &arr)
        sorted = isSorted(arr: arr)
    }
}

private func shuffle(arr:inout [Int]) {
    let count:Int = arr.count
    for i in 0..<count {
        let index:Int = Int(arc4random_uniform(UInt32(arr.count)))
        if i != index {
            swap(&arr[i], &arr[index])
        }
    }
}

private func isSorted(arr:[Int])->Bool {
    var isSorted:Bool = true
    for i in 0..<arr.count - 1 {
        if arr[i] > arr[i+1] {
            isSorted = false
            break
        }
    }
    return isSorted
}`</code></pre>

测试代码:
<pre><code>let bogoSort:BogoSort = BogoSort() var arr:[Int] = [2, 1] bogoSort.sort(arr: &arr) print("FlyElephant---猴子排序---\(arr)")</code></pre>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 总结一下常见的排序算法。 排序分内排序和外排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序...
    jiangliang阅读 5,259评论 0 1
  • 一. 写在前面 要学习算法,“排序”是一个回避不了的重要话题,在分析完并查集算法和常用数据结构之后,今天我们终于可...
    Leesper阅读 7,330评论 0 40
  • 来自微信公众号:开点工作室(ID:kaidiancs) 排序是根据某种标准将一组记录重排的过程,是最常见的计算任务...
    开点工作室阅读 6,544评论 0 8
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,608评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,109评论 0 15

友情链接更多精彩内容