Bogosort is a sorting algorithm, much like quick sort, and merge sort, with a twist.
It has an average case performance of O((n+1)!).
Bogosort is known by many other names, including stupid sort, monkey sort, and permutation sort.
Knowing this critical information, let’s dive into the meat of this sorting algorithm.
How Does It Work?
Bogosort works by taking an input list, and checking if it is in order. If it is, then we are done, and the list is returned. This means that Bogosort has a best case performance of O(n).
If the list isn’t in order, then we will shuffle the list until we get a list that is sorted. Unfortunately, since the list will be shuffled randomly, Bogosort technically has a worst case performance of O(∞).
Implementation
Bogosort’s implementation is short and concise.
import random def Bogosort(list): while not isSorted(list): random.shuffle(list) return list def isSorted(list): if(len(list) <= 1): return True if(list[1] >= list[0]): return isSorted(list[1:]) else: return False
Simple and crisp. Let’s try it on some inputs.
Note that I used Python’s time module to print out the time, which is quick and dirty, but it does the job.
Bogosort([5,4,3,2,1]) Time = 0.000202894210815
Okay. Now let’s try it again on an input size of 10.
Bogosort([10,9,8,7,6,5,4,3,2,1]) 52.8398268223
Since it is completely randomized, running this will give different times each time it is run, but the ballpark figure will at least be somewhat similar.
Normally, I’d try on a larger input size, but since the growth rate is going to be exponential, an input size of 11 will cause a time that is much longer than when an input size of 10 is used.
In fact, in our example, running on an input size of 10 took over 260,000 times longer than when run on an input size of 5.
However, since the numbers are random, it is impossible to determine exactly how much longer it will take , but it should be somewhere around that range.
Conclusion
If you are looking for a horrendously slow sorting algorithm for any reason, Bogosort is the perfect candidate. It works by randomly shuffling the list until it gets a sorted list, which means that its average performance is going to be O((n+1)!).
Of course, Bogosort should not be taken as a serious sorting algorithm, and is intended to be used as a comparison to other sorting algorithms like quick sort and merge sort.
Unless your goal is to create slow code, stay far far away from this monstrosity.