In [1]:
%matplotlib inline
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
In [2]:
import random
def naive(input):
input = list(input)
n = len(input)
for i in range(n):
j = random.randint(0,n-1)
input[i], input[j] = input[j], input[i]
return "".join(input)
In [3]:
c = {
'123': 0,
'132': 0,
'213': 0,
'231': 0,
'312': 0,
'321': 0
}
for i in range(10000):
c[naive('123')] += 1
print(c)
In [4]:
labels = list(sorted(c.keys()))
values = [c[x] for x in labels]
y_pos = np.arange(len(values))
plt.bar(y_pos, values, align='center', alpha=0.5, color='blue')
plt.xticks(y_pos, labels)
plt.title("Naive Sort")
Out[4]:
In [5]:
def fisheryates(input):
input = list(input)
l = len(input)
for i in range(l):
j = random.randint(i,l-1)
input[i], input[j] = input[j], input[i]
return "".join(input)
In [6]:
c = {
'123': 0,
'132': 0,
'213': 0,
'231': 0,
'312': 0,
'321': 0
}
for i in range(10000):
c[fisheryates('123')] += 1
print(c)
In [7]:
labels = list(sorted(c.keys()))
values = [c[x] for x in labels]
y_pos = np.arange(len(values))
plt.bar(y_pos, values, align='center', alpha=0.5, color='blue')
plt.xticks(y_pos, labels)
plt.title("Fisher-Yates Sort")
Out[7]:
In [ ]: