猴子排序 (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>