排序算法(一):冒泡排序

冒泡排序是原址排序,时间复杂度在n~n^2之间。最好的情况是数组本身就是序,并且是满足排序需求的,这时只要n次循环就可以。最坏的情况的,数组本身的顺序和需要的顺序是相反的。

冒泡排序的思路是:两两对比,交换位置,第一次循环把最大的或者是最小的那个放在最后,经过n次循环,把数字放在对应的位置上。

代码实现:

python 复制代码
import time
from functools import wraps


def 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 result
    return wrapper


@count_execute_time
def maopao_asc_sort(data):
    """
    冒泡生序排序
    """
    count_ = 0
    for 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_ += 1
    return data, count_


@count_execute_time
def maopao_desc_sort(data):
    """
    冒泡降序
    """
    count = 0
    for 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 += 1
    return data, count
相关推荐
风筝在晴天搁浅6 小时前
代码随想录 718.最长重复子数组
算法
kyle~6 小时前
算法---回溯算法
算法
star _chen6 小时前
C++实现完美洗牌算法
开发语言·c++·算法
hzxxxxxxx7 小时前
1234567
算法
Sylvia-girl7 小时前
数据结构之复杂度
数据结构·算法
CQ_YM7 小时前
数据结构之队列
c语言·数据结构·算法·
VekiSon7 小时前
数据结构与算法——树和哈希表
数据结构·算法
xu_yule8 小时前
数据结构与算法(1)(第一章复杂度知识点)(大O渐进表示法)
数据结构
大江东去浪淘尽千古风流人物9 小时前
【DSP】向量化操作的误差来源分析及其经典解决方案
linux·运维·人工智能·算法·vr·dsp开发·mr
fish_xk9 小时前
数据结构之排序
数据结构