排序算法(一):冒泡排序
冒泡排序是原址排序,时间复杂度在n~n^2之间。最好的情况是数组本身就是序,并且是满足排序需求的,这时只要n次循环就可以。最坏的情况的,数组本身的顺序和需要的顺序是相反的。
冒泡排序的思路是:两两对比,交换位置,第一次循环把最大的或者是最小的那个放在最后,经过n次循环,把数字放在对应的位置上。
代码实现:
import time
from functools import wrapsdef count_execute_time(func):@wraps(func)def wrapper(*args, **kwargs):start = time.time()result = func(*args, **kwargs)print(f"{func.__name__} cost {time.time() - start}")print(f"{func.__name__} result: {result}\n")return resultreturn wrapper@count_execute_time
def maopao_asc_sort(data):"""冒泡生序排序"""count_ = 0for i in range(len(data)):for j in range(len(data)-1):if data[j] > data[j+1]:data[j], data[j+1] = data[j+1], data[j]count_ += 1return data, count_@count_execute_time
def maopao_desc_sort(data):"""冒泡降序"""count = 0for i in range(len(data)):for j in range(len(data)-1):if data[j] < data[j+1]:data[j], data[j+1] = data[j+1], data[j]count += 1return data, count