A calculator to predict big-O of sorting functions
Project description
Big-O Caculator
A big-O calculator to estimate time complexity of sorting functions.
inspired by : https://github.com/ismaelJimenez/cpp.leastsq
Installation
pip install big-O-calculator
Usage
You can call which array to test
(n : [10, 100, 1_000, 10_000, 100_000])
Big-O calculator
Args:
functionName [Callable]: a function to call.
array [str]: "random", "sorted", "reversed", "partial", "Ksorted".
limit [bool]: True or False to break before it takes "forever" to sort an array. (ex. selectionSort)
Returns:
complexity (str) : ex) O(n)
time (float) : Time took to sort all 5 different arrays in second (maxLen=100,000)
Info:
To see the result of function, return the array.
K in Ksorted will use testSize//2.
from bigO import bigO
tester = bigO.bigO()
tester.test(bubbleSort, "sorted")
Quick Sort Example
from bigO import bigO
from random import randint
def quickSort(array): # in-place | not-stable
"""
Best : O(nlogn) Time | O(logn) Space
Average : O(nlogn) Time | O(logn) Space
Worst : O(n^2) Time | O(logn) Space
"""
if len(array) <= 1:
return array
smaller, equal, larger = [], [], []
pivot = array[randint(0, len(array) - 1)]
for x in array:
if x < pivot:
smaller.append(x)
elif x == pivot:
equal.append(x)
else:
larger.append(x)
return quickSort(smaller) + equal + quickSort(larger)
tester = bigO.bigO()
complexity, time = tester.test(quickSort, "random")
complexity, time = tester.test(quickSort, "sorted")
complexity, time = tester.test(quickSort, "reversed")
complexity, time = tester.test(quickSort, "partial")
complexity, time = tester.test(quickSort, "Ksorted")
''' Result
Running quickSort(random array)...
Completed quickSort(random array): O(nlog(n))
Time took: 0.35816s
Running quickSort(sorted array)...
Completed quickSort(sorted array): O(nlog(n))
Time took: 0.37821s
Running quickSort(reversed array)...
Completed quickSort(reversed array): O(nlog(n))
Time took: 0.38500s
Running quickSort(partial array)...
Completed quickSort(partial array): O(nlog(n))
Time took: 0.35820s
Running quickSort(Ksorted array)...
Completed quickSort(ksorted array): O(nlog(n))
Time took: 0.38140s
'''
Selection Sort Example
from bigO import bigO
def selectionSort(array): # in-place, unstable
'''
Best : O(n^2) Time | O(1) Space
Average : O(n^2) Time | O(1) Space
Worst : O(n^2) Time | O(1) Space
'''
currentIdx = 0
while currentIdx < len(array) - 1:
smallestIdx = currentIdx
for i in range(currentIdx + 1, len(array)):
if array[smallestIdx] > array[i]:
smallestIdx = i
array[currentIdx], array[smallestIdx] = array[smallestIdx], array[currentIdx]
currentIdx += 1
return array
tester = bigO.bigO()
complexity, time = tester.test(selectionSort, "random")
complexity, time = tester.test(selectionSort, "sorted")
complexity, time = tester.test(selectionSort, "reversed")
complexity, time = tester.test(selectionSort, "partial")
complexity, time = tester.test(selectionSort, "Ksorted")
''' Result
Running selectionSort(random array)...
Completed selectionSort(random array): O(n^2)
Time took: 4.04027s
Running selectionSort(reversed array)...
Completed selectionSort(reversed array): O(n^2)
Time took: 4.04918s
Running selectionSort(sorted array)...
Completed selectionSort(sorted array): O(n^2)
Time took: 3.97238s
Running selectionSort(partial array)...
Completed selectionSort(partial array): O(n^2)
Time took: 4.02878s
Running selectionSort(Ksorted array)...
Completed selectionSort(ksorted array): O(n^2)
Time took: 4.05617s
'''
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
big-O calculator-0.0.7.tar.gz
(5.0 kB
view hashes)
Built Distributions
big_O_calculator-0.0.7-py3.7.egg
(17.8 kB
view hashes)
Close
Hashes for big_O_calculator-0.0.7-py3.7.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | d38ab74d0f69ac558f38b55eb454e7a37ae37321c9ffc0fe9943ca415e992f66 |
|
MD5 | f5cee9fddc0d646c1f451642b0162c9d |
|
BLAKE2b-256 | 7f870bb6aea964b61b60b259f43220fa7d72d85e1955ee1b4839660fd20e6502 |
Close
Hashes for big_O_calculator-0.0.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b15f1413243458ec9f3d29b35d31bf7c583a14b3dbdca2fb205ed33351ddffd1 |
|
MD5 | 1247668457a943583a335dc4d2aa7551 |
|
BLAKE2b-256 | 5f6e1a2ceeb3272558e93a7dcc6435f34b61e66ac9f0e07e748b55bf911c5ab3 |