def bubble_sort(arr):
# print(f"Imported array: {arr}")
= len(arr)-1
last_idx_unsorted sorted = False
= 0,0
ctr_compare, ctr_swap while not sorted:
sorted = True
# print(f"Sorting array: {arr[0:last_idx_unsorted+1]}")
for i in range(last_idx_unsorted):
+=1
ctr_compareif arr[i]>arr[i+1]:
+1]=arr[i+1],arr[i]
arr[i],arr[i+=1
ctr_swapsorted = False
-=1
last_idx_unsorted= ctr_compare+ctr_swap
n_total_steps # print(f"sorted_array: {arr}, nsteps: {n_total_steps}")
return None, n_total_steps
# return arr, n_total_steps
# arr = [5,4,3,2,1]
# bubble_sort(arr)
1. \(BubbleSort()\) Function (with n_total_steps
counter)
2. Chart (very inefficient data creation)
=10
size_param= [None]*size_param
arr_tbl = 5
to_val
for i in range(size_param):
= list(range(to_val,0,-1))
arr print(f"arr_size: {len(arr)}")
= bubble_sort(arr)
_, nsteps = len(arr)
arr_size =[arr_size,nsteps]
arr_tbl[i]=2*to_val
to_val= []
xs = [] ys
arr_size: 5
arr_size: 10
arr_size: 20
arr_size: 40
arr_size: 80
arr_size: 160
arr_size: 320
arr_size: 640
arr_size: 1280
arr_size: 2560
for i,v in enumerate(arr_tbl):
0])
xs.append(v[1])
ys.append(v[print(xs)
print(ys)
[5, 10, 20, 40, 80, 160, 320, 640, 1280, 2560]
[20, 90, 380, 1560, 6320, 25440, 102080, 408960, 1637120, 6551040]
import numpy as np
import matplotlib.pyplot as plt
= rf"Bubble Sort Time Complexity $O(N^2)$"
plot_title = rf"$O(N^2)$"
lbl_plt 'ro-', linewidth=2, markersize=6, label=lbl_plt)
plt.plot(xs, ys, ='lightgrey', linestyle='--', linewidth=0.5)
plt.grid(color='left')
plt.title(plot_title, loc='lower right') plt.legend(loc