冒泡排序(buble sort)
import time
from random import randint
import matplotlib.pyplot as plt
%matplotlib inline
def _bubble_sort(nums:list,reverse = False):
start = time.time()
for i in range(len(nums)):
for j in range(len(nums) - i - 1):
if(nums[j] > nums[j + 1]):
nums[j], nums[j + 1] = nums[j + 1], nums[j]
if reverse:
nums.reverse()
t = time.time() - start
return len(nums),t
#*************************************
def generate_random_array(n):
return [randint(0, n) for e in range(n)]
#*************************************
random_lists = [generate_random_array(100 * n) for n in range(1, 20)]
rst = [_bubble_sort(l) for l in random_lists]
rst
#*************************************
x = list(zip(*rst))[0]
y = list(zip(*rst))[1]
plt.plot(x,y)
选择排序(selection sort)
def selection_sort(arr):
start = time.time()
for i in range (len(arr)):
pos_min = i
for j in range (i+1,len(arr)):
if(arr[j] < arr[pos_min]):
pos_min = j
arr[i], arr[pos_min] = arr[pos_min], arr[i]
t = time.time() - start
return len(arr),t