首页 > 其他分享 >冒泡排序时间复杂度分析

冒泡排序时间复杂度分析

时间:2024-02-18 23:11:07浏览次数:24  
标签:分析 EndIndex arr int 复杂度 冒泡排序 Swap

冒泡排序(升序)时间复杂度分析

原理:通过从前往后遍历两两对比,
当前一个数大于后一个数,则交换位置,
最大的数可以遍历到最右侧
不断从后缩小数组范围(end--),当end到第一个元素时停止

void Swap(int*a,int *b){
    int tmp=*b;
    *b=*a;
    *a=tmp;
}

void BubbleSort(int * arr,int n){
    assert(arr);
    for(int EndIndex=n-1;EndIndex>0;EndIndex--)
    {
        for(int i=1;i<=EndIndex;i++)
        {
            if(arr[i-1]>arr[i])
                Swap(arr+i-1,arr+i);
            else
                continue;
        }
    }
}

从中可以看出,外部循环了数组大小n次,而每一次内部循环次数
分别为n-1,n-2,n-3,...,0,等差数列相加得到(n-1)*n/2,

  • 最差时间复杂度:O(N^2)
  • 最佳时间复杂度:O(N)

标签:分析,EndIndex,arr,int,复杂度,冒泡排序,Swap
From: https://www.cnblogs.com/saopigqwq233/p/18020140

相关文章

  • Junit5源码分析
    近期使用junit和springtest做公司的一个灰盒自动化项目,即非白盒单测和黑盒接口方式的自动化方式,验证代码中复杂的业务逻辑(金融相关),使用过程中遇到过一些使用问题,业余时间学习了下框架源码,略有收获,遂记录之。创建一个简单测试DEMO如下:新建一个TestApplication和一个server新建......
  • docker启动mysql失败原因分析
    dockerlogsmysql 发现问题Can'treaddirof'/etc/mysql/conf.d/修改原因:原来的命令:dockerrun-p3306:3306--namemysql-v/mydata/mysql/log:/var/log/mysql-v/mydata/mysql/data:/var/lib/mysql -v/mydata/mysql/conf:/etc/mysql-eMYSQL_ROOT_PASSWORD=roo......
  • 数学分析中间断点的类型
    在数学分析中,函数的间断点是指函数在该点附近的行为表现出不一致或者极端性的点。间断点的类型主要有两种:第一类间断点和第二类间断点。第一类间断点:可去间断点和跳跃间断点。可去间断点(RemovableDiscontinuity):如果函数在某点的左极限和右极限都存在且相等,但函数在该点要么没有......
  • 跨界协作:借助gRPC实现Python数据分析能力的共享
    gRPC是一个高性能、开源、通用的远程过程调用(RPC)框架,由Google推出。它基于HTTP/2协议标准设计开发,默认采用ProtocolBuffers数据序列化协议,支持多种开发语言。在gRPC中,客户端可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用......
  • Swoole 源码分析之 Http Server 模块
    首发原文链接:Swoole源码分析之HttpServer模块Swoole源码分析之HttpServer模块Http模块的注册初始化这次我们分析的就是Swoole官网的这段代码,看似简单,实则不简单。在Swoole源码文件swoole_http_server.c中有这样一个函数php_swoole_http_server_minit。这个......
  • POLIR-Economics-Microeconomics: 经济模型{静态分析+比较静态分析+动态分析}}@<<西方
    经济理论经济理论是在对现实的经济事物的主要特征和内在联系进行概括和抽象的基础上,对现实的经济事务进行的系统描述;西方经济学家认为由于现实的经济事务是错综复杂的,所以在研究每一个经济事物时,往往要舍弃一些非基本的因素,只就经济事物的基本因素及其相互之间的......
  • Lex 生成一个词法分析器
     lex通过输入一个.l文件生成一个lex.yy.c文件,然后通过c编译器编译成一个可执行的词法分析器。该词法分析器扫描输入源文件,生成一个token符号流给后面语法分析器使用。 .l文件的结构,分成三个部分,声明,转换规则,自定义规则。三个部分由%%分割declarations%%transl......
  • 大数分析(5)——BMS(两行)
    前言在稍微过了一遍反射和最基本的稳定之后,我们终于可以着手分析当今最前沿的两个记号了不过BMS和Y序列其实都和PrSS和Hydra模式有关,进而也就是和树型模式有关首先是BashicuMatrixSystem,简称BMS单行BMS请参考PrSS,顺便可以复习一下,每一项少一即可两行BMS标准型是矩阵形式,......
  • 冒泡排序
    需求冒泡排序,把数组从小到大进行排列思路总结冒泡排序采用双循环,i循环代表要排序几趟,j循环代表一趟要排序几次;有n个数要排n-1趟,一趟n-i次(因为前面排过的数字不必再排);冒泡排序算法思路图(bubble):代码实现packagecom.jichu.Arry;importjava.util.Arrays;publiccla......
  • NLP-情感分析 Prompting
    **NLP-情感分析Prompting**注:本文是Transformers快速入门Prompting章节的学习笔记,更详细的分析请参见原文。写在前面Github地址:https://github.com/Lockegogo/NLP_Tasks/tree/main/text_cls_prompt_senti本项目使用Prompting方法完成情感分析任务。Prompting方法......