常见排序算法 - 猴子排序 (Bogo Sort)
算法原理
猴子排序 (Bogo Sort) 是个既不实用又原始的排序算法,其原理等同将一堆卡片抛起,落在桌上后检查卡片是否已整齐排列好,若非就再抛一次。其名字源自 Quantum bogodynamics,又称 bozo sort、blort sort 或猴子排序(参见无限猴子定理)。并且在最坏的情况下所需时间是无限的。
伪代码:
1 2 3
| while not InOrder(list) do Shuffle(list) done
|
这个排序方法没有办法给出实例分析,下面直接看代码。
JavaScript 语言实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| 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; }
|
参考文章