(9)猴子排序 (Bogo Sort)

最后更新于:2022-04-01 21:03:39

## 算法原理 > 猴子排序 (Bogo Sort) 是个既不实用又原始的排序算法,其原理等同将一堆卡片抛起,落在桌上后检查卡片是否已整齐排列好,若非就再抛一次。其名字源自 Quantum bogodynamics,又称 bozo sort、blort sort 或猴子排序(参见[无限猴子定理](http://zh.wikipedia.org/wiki/%E7%84%A1%E9%99%90%E7%8C%B4%E5%AD%90%E5%AE%9A%E7%90%86))。并且在最坏的情况下所需时间是无限的。 伪代码: ~~~ while not InOrder(list) do Shuffle(list) done ~~~ 这个排序方法没有办法给出实例分析,下面直接看代码。 ## JavaScript 语言实现 ~~~ function bogoSort(array) { function swap(array, i, j) { var temp = array[i]; array[i] = array[j]; array[j] = temp; } // 随机交换顺序 function shuffle(array) { var i, l = array.length; for (var i = 0; i < l; i++) { var j = Math.floor(Math.random() * l) swap(array, i, j) } } // 判断是否已经排好序 function isSorted(array) { var i, l = array.length; for (var i = 1; i < l; i++) { if (array[i - 1] > array[i]) { return false; } } return true; } var sorted = false; while (sorted == false) { // 效率低下的位置 v = shuffle(array); sorted = isSorted(array); } return array; } ~~~ ## 参考文章 * [维基百科,自由的百科全书](http://zh.wikipedia.org/wiki/Bogo%E6%8E%92%E5%BA%8F) * [Sorting algorithms/Bogosort](http://rosettacode.org/wiki/Sorting_algorithms/Bogosort)
';