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

冒泡排序是原址排序,时间复杂度在n~n^2之间。最好的情况是数组本身就是序,并且是满足排序需求的,这时只要n次循环就可以。最坏的情况的,数组本身的顺序和需要的顺序是相反的。
冒泡排序的思路是:两两对比,交换位置,第一次循环把最大的或者是最小的那个放在最后,经过n次循环,把数字放在对应的位置上。
在这里插入图片描述
代码实现:

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

2024银行科技岗笔试通关秘籍:从资料准备到实战技巧 本文系统解析了2024年银行科技岗笔试的考察内容与备考策略。文章指出,笔试是一场涵盖通用能力测试、计算机专业基础、金融科技知识和英语性格测试的复合型考试,并重点提供了数据结构与算法、计算机网络、数据库等高频考点的深度解析与实战突破技巧,帮助考生高效准备,顺利通关。 阅读详情

相关推荐

从零到一:基于STM8的125KHz RFID读卡器实现与曼彻斯特码解析实战

本文详细介绍了基于STM8单片机的125KHz RFID读卡器实现过程,重点解析了曼彻斯特码的编码原理与解码算法。通过硬件电路设计、软件实现及性能优化,帮助开发者低成本构建稳定读取EM4100卡片的系统,适用于门禁、考勤等应用场景。

weixin_42525211的博客 236

小学生图解排序算法:①冒泡排序

冒泡排序是一种计算机科学领域的较简单的排序算法。名字由来是因为越大的元素会经典交换慢慢“浮”到数列的顶端,故名。

纯文笔记 2037

VQGAN实战:从文本到高清图像的保姆级生成教程(含PyTorch代码)

本文详细介绍了VQGAN(Vector Quantized Generative Adversarial Network)在文本到高清图像生成中的应用,提供了从环境配置到模型加载、文本编码及图像生成的完整PyTorch代码教程。通过实战案例和高级调优技巧,帮助开发者快速掌握VQGAN的核心技术,实现百万像素级的高清图像生成。

u8v9w0x1y的博客 649

C语言排序算法(一):冒泡排序

分享一下我对C语言中冒泡排序算法的学习和理解(裂开了,足足写了一天,自闭中…) 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们的位置交换过来。走访数列重复地进行直到排序完成。因为越大(小)的元素经过交换会慢慢"浮"到数列的顶端(尾端),就如同碳酸饮料中的气泡一样,故名“冒泡排序”。 算法原理 以从大到小降序排列为例。 第一轮走访开始 ----> 比较相邻的元素- —> 如果第一个元素比第二个元素

sunshine的博客 2万+

OpenCV图像去畸变实战指南:从原理到参数调优(附完整代码与效果对比)

本文深入解析了OpenCV图像去畸变的原理与实战技巧,详细对比了标准透视、鱼眼及全能型omnidir三种校正函数的核心参数调优方法。通过分析alpha、balance、centerX/Y及focalScale四大参数对输出效果的影响,并结合完整代码与效果对比图,帮助开发者精准校正镜头畸变,提升计算机视觉任务精度。

weixin_29046611的博客 341

MTGS与3D高斯泼溅:如何用多轨迹数据重建自动驾驶场景(附代码解析)

本文深入解析了MTGS(多轨迹高斯泼溅)技术在自动驾驶场景重建中的工程实践。该方法通过分层场景表示,巧妙融合多轨迹数据,利用3D高斯泼溅技术统一处理静态几何与动态物体,有效解决了复杂环境下的重建难题。文章结合代码,详细阐述了其实现框架、损失函数设计及优化策略,为构建高保真数字孪生场景提供了实用指南。

v5w6x的博客 447

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

本文详细介绍了冒泡排序算法,包括其基本原理、Java代码实现及优化方法。冒泡排序通过多次遍历比较相邻元素,将最大元素逐步"冒泡"到序列末端,时间复杂度最坏为O(n²),最好为O(n),空间复杂度为O(1)。文章提出了提前退出和减少循环范围两种优化策略,并对比了冒泡排序与其他常见算法(如快速排序)的性能差异。虽然效率不高,但冒泡排序实现简单,适用于小规模数据、基本有序的序列及教学场景。

一碗黄焖鸡三碗米饭的博客 1038

基于反相器的超声波发生和气泡检测电路

本文主要介绍了关于超声波的两种电路——基于反相器的振荡电路和基于逻辑们的气泡检测电路

xehagy的博客 1960

基础排序算法一:冒泡排序

基础排序算法一:冒泡排序 冒泡排序介绍 冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序。 它是一种较简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止 冒泡...

ccystewart的博客 272

【零基础入门unity游戏开发——2D篇】SpriteEditor图片编辑器

【零基础入门unity游戏开发——2D篇】SpriteEditor图片编辑器

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2332

【GameFramework框架】一、框架介绍

这是GameFramework框架教程的第一篇,但是博主不准备直接就讲GameFramework框架。【GameFramework框架】二、GameFramework框架介绍了。框架(Framework)通常被理解为一种基础要素的集合,它们用于承载系统的必要功能。约束性:框架定义了解决特定问题的边界,并将相关的软件组件约束在这个范围内,以保持框架的内聚性和解决问题的专注性。支撑性:框架本身不直接解决问题,而是提供一个基础的支撑结构,使得在其上构建的解决方案更为灵活和高效。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 1万+

排序算法一:冒泡排序

什么是冒泡排序? 冒泡排序的思想是:从无序的一组数据一端开始,以相邻两个数字为一组比较大小。保持较大的数字总是在右边(按照左小右大大的顺序排序),如果不是则交换两个数字的位置,如果满足则右移一位继续比较下面两个数字的大小,如此往复直至排序结束。 冒泡排序的Matlab实现 %冒泡排序算法(从左到右升序排列) clc clear all X = [7,5,1,10,4,3,9,8,2,0,6];%一组排列顺序被打乱的数据 L = length(X); m = 0;%用于标记不用再排序的数字个数 whil.

weixin_45560953的博客 273

台区同期线损智能诊断与闭环治理体系及工程化实践

高损台区:同期线损率>预设阈值(通常为8%,可根据区域、台区类型调整);负损台区:同期线损率<0,即供电量小于售电量,多由档案、计量、拓扑错误导致;波动损台区:月度线损率波动幅度>预设阈值(通常为5%),且无合理原因;持续异常台区:连续2个及以上周期线损率不达标,且未完成有效整改。台区同期线损智能诊断与闭环治理体系,以电力大数据为基础、智能诊断模型为核心、标准化流程为保障,彻底解决了传统线损治理“异常发现慢、定位难、整改乱、无闭环”的痛点,实现了线损治理从“人工经验驱动”向“数据智能驱动”的根本性转型。

getusushu的博客 205

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

所谓排序即按照一定的规律将一组数据进行排列。排序算法的形式化定义如下: 设存在一组无序序列,并且存在一个函数,在经过一系列对该序列中的元素位置调整后,使得新得到的序列满足对于任意的,均有(升序排序)或者(降序排序)。针对不同的数据源的不同特性,人们设计出了不同的排序算法,以求对算法的时间复杂度或者空间复杂度进行优化。常见的排序算法有:冒泡排序,插入排序,快速排序,桶排序算法等。下面对各种...

蜗牛大人的专栏 579

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

排序算法图解(一):冒泡排序与冒泡排序的优化

冒泡排序(Bubble Sorting)即:通过对待排序的序列从前往后,依次比较相邻元素的值,若发现逆序则交换位置,使较大的元素逐渐移动到后部,就像水底的气泡一样逐渐从水面冒出来,这就是冒泡名称的由来。

黄小黄的博客 1132

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java排序算法一:冒泡排序

冒泡排序(升序): 1,两个相邻的元素进行比较,大的数放在右边;数组中的元素两两比较完之后,数组中的最大的数的位置就是数组中的最后一个元素 2,每一轮比较都会找到当前数组中的最大值;下一轮需要比较的元素就不用包含已经找出来的元素;针对数组长度为n的数组,需要找n-1轮;

SpringKakashi 254

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

排序算法(一):冒泡排序是相邻的元素两两比较,把小的元素往前调或者把大的元素往后调,实现最大(小)值排列在一端。

weixin_51227644的博客 1170

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

定义 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。 来源于百度百科 动图演示 图片来源: https://www.to

ITxiaofeixiang的博客 270

排序算法<一> :冒泡排序及优化

刚开始写博客。先从简单的开始。总结下几种排序算法。 冒泡排序名字由来 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。 冒泡排序原理 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 (升序排列) 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤...

FramePyf的专栏 166
上一篇: mongodb: cannot import name ‘_check_name‘ from ‘pymongo.database‘
下一篇: 排序算法(二):插入排序
python_tty
博客等级 码龄12年 226粉丝 242原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值