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

冒泡排序是原址排序,时间复杂度在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
相关推荐
码破苍穹ovo2 小时前
堆----1.数组中的第K个最大元素
java·数据结构·算法·排序算法
愤怒的小鸟~~~2 小时前
c语言创建的一个队列结构(含有这个头指针和这个尾指针的结构具有一定的参考价值)
c语言·开发语言·算法
Joker-01114 小时前
深入 Go 底层原理(十二):map 的实现与哈希冲突
算法·go·哈希算法·map
lifallen4 小时前
深入解析RocksDB的MVCC和LSM Tree level
大数据·数据结构·数据库·c++·lsm-tree·lsm tree
金融小师妹5 小时前
AI量化模型解析黄金3300关口博弈:市场聚焦“非农数据”的GRU-RNN混合架构推演
大数据·人工智能·算法
金融小师妹5 小时前
基于LSTM-GRU混合网络的动态解析:美联储维稳政策与黄金单日跌1.5%的非线性关联
大数据·人工智能·算法
白日梦想家-K5 小时前
题单【模拟与高精度】
开发语言·c++·算法
重生之我是Java开发战士6 小时前
【C语言】内存函数与数据在内存中的存储
c语言·开发语言·算法
roman_日积跬步-终至千里7 小时前
【机器学习】“回归“算法模型的三个评估指标:MAE(衡量预测准确性)、MSE(放大大误差)、R²(说明模型解释能力)
算法·机器学习·回归
kokunka7 小时前
【数据结构】栈的顺序存储(整型栈、字符栈)
数据结构