冒泡排序与快速排序

冒泡排序与快速排序比较 1.简单描述冒泡排序 1.1什么是冒泡排序? 冒泡排序是一种简单的排序方法,它的基本思想是:通过相邻两个元素之间的比较和交换,使较大的元素逐渐从前面移向后面(升序),就像水底下的气泡一样逐渐向上冒泡,所以被称为“冒泡”排序。 1.2逻辑图表示 1.3算法逻辑实现 2.简单描述快速排序 2.1什么是快速排序? 快速排序(Quick Sort) 是对冒泡排序的一种改进方法,在冒泡排序中,进行元素的... 阅读详情

昨天,闲下来看了下冒泡排序与快速排序的区别。
两者区别还是挺大,思路完全不一样。
我们先看冒泡排序,冒泡是通过比较相邻两个元素的大小来调换顺序,循环下去。代码如下

// 冒泡排序
    function bubble(arr) {
        let n = 0
        for (var i = arr.length - 1; i >= 0; i--) {
            let change = false
            for (var j = 0; j < i ; j ++){
                n++
                if (arr[j] > arr[j+1]){
                    let a = arr[j+1]
                    arr[j+1] = arr[j]
                    arr[j] = a
                    change = true
                }
            }
            // 优化,减少循环次数
            if (!change){
                break
            }
        }
        console.log(n) //循环次数
        return arr
    }

再看快速排序,我觉得也可以叫二分法排序,这是一种通过递归将数组分两边的排序方法。先取中间元素a[a.length/2], 比较中间元素与每一个元素的大小,比他大的push到一个数组中,小的push到另一个数组中,然后递归下去,代码如下

// 快速排序
    var num = 0 // 总的循环次数
    function quick(arr){
        if(arr.length<=1){
            return arr
        }
        let n = 0 //每次函数调用的循环次数
        let midIndex = Math.floor(arr.length/2)
        let mid = arr.splice(midIndex,1)
        let left = []
        let right = []
        for (var i = 0; i < arr.length; i++) {
            n++
            if (arr[i]>midIndex) {
                right.push(arr[i])
            } else {
                left.push(arr[i])
            }
        }
        console.log(n)
        num += n
        return quick(left).concat(mid,quick(right))
    }

下面我们通过 一个数组去测试两者的效率,为了体现区别,我们的数组长度多一点

let arr = [23, 34, 54,12, 34, 3, 4, 13, 29, 89, 223, 33, 45, 665, 335, 7, 17, 90, 40]

放入上面两个函数中,冒泡排序中n的值是161,快速排序中 num 的值是126
由此可见,两者差别还是挺大,如果数组长度是100,那效率就差很多了。所以推荐大家遇到排序问题,尽量用快速,不仅逼格高,效率还杠杠的

冒泡排序与快速排序的差异性 一冒泡排序与快速排序的简介 1 冒泡排序 冒泡排序: 冒泡排序是两个相邻的数两两进行比较: 如下图所示 第一轮排序后找出来了最大的数,并将最大的数放在了最后: 第二轮排序后找出来了最大的数,并将最大的数放在了最后: 。 。 。 进行n-1次排序后确定了位置: 那么通过下图可以看出最后几轮并没有对数字进行位置移动但是还是进行了程序的运算,那么这样就浪费了程序的运算,及空间的浪费。 在这里插入代码:... 阅读详情

相关推荐

Python 冒泡排序与快速排序的效率比较

前言 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。 一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际的优秀算法,得经过大量的推理和分析。 1、冒泡排序(Bubble Sort) 冒泡排序(Bubble...

weixin_46103001的博客 745

冒泡排序和快速排序的区别

冒泡排序:是从最底层元素开始比较,(与其上的元素比较)小于就往上再比,大于就交换,再用较小的往上比较,直到最高层, 第一次把最小的放到最上层,第二次把第二小的放到第二层,以次类推; 冒泡排序的原理:重复的遍历要排序的数组,每次遍历过程中从头至尾比较两个相邻的元素,若顺序错误则交换两个元素。 快速排序:是先找到一个轴值,比较时把所有比轴值小的放到轴值的左边, 比轴值大的放到右边,再在两边各自选取轴值再按前面排序,直到完成. 冒泡排序的基本思想:每次比较两个相邻的元素,如果它们的顺序错误就把他们交换过来

具身机器人和通用AI 3828

Topas——基于Geant4的放射治疗蒙特卡罗算法模拟工具

本文内容参考Joseph Perl 的线上会议,视频详情可见于,该视频会议内容主要介绍Topas功能、软件架构、工作流程、参数设定、物理模型、具体案例等,对TOPAS的基本入门使用方法以及使用规定作出阐述。

fy方的博客 7606

快速排序算法与冒泡排序算法的比较

冒泡排序的思想就是利用的比较交换,利用循环将第 i 小或者大的元素归位,归位操作利用的是对 n 个元素中相邻的两个进行比较,如果顺序正确就不交换,如果顺序错误就进行位置的交换。通过重复的循环访问数组,直到没有可以交换的元素,那么整个排序就已经完成了。2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元 素比基准值大的摆在基准的 后面(相同的数可以到任一边)。冒泡排序名字的由来就是因为在交换过程中,类似水冒泡,小(大)的元素经过不断的交换由水底慢慢的浮到水的顶端。

weixin_49930962的博客 1846

超详细MySQL 8.0安装与配置

MySQL的安装与配置 还不会安装MySQL的同学们,还不会配置MySQL的同学们,赶紧按照下面步骤操作起来,超详细安装步骤如下: 进入MySQL官网 1、点击download 2、点击MySQL Community Server 3、选好选项点击go to download page 4、点击download 5、点击no thanks,just start my download 6、选Server only,点击Next 7、点击Execute 8、点击

Turniper的博客 8759

【Lane】 Ultra-Fast-Lane-Detection 复现

引言 车道线检测源码复现以及训练自己的数据集 1 环境搭建 conda create -n lane python=3.7 conda activate lane # 激活环境 conda install pytorch torchvision cudatoolkit=10.1 -c pytorch pip install -r requirements.txt 2 下载项目源码 若在服务器上可以用指令下载,否则直接在网址中下载 git clone https://github.com/cfzd/U

qq_44703886的博客 2万+

排序算法(三) 冒泡排序和快速排序

排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。

m0_73633144的博客 2158

2024年11月架构设计师案例分析真题回顾,附参考答案、解析及所涉知识点(二)

软考高级系统架构设计师考试包含三个科目:信息系统综合知识、案例分析和系统架构设计论文。考试形式为机考。本文主要回顾2024年下半年(2024-11-10)系统架构设计师考试上午第二科案例分析的题目,同时附带参考解答、解析和所涉知识点。

一几文的编程学习笔记。 1662

排序算法中——冒泡排序和快速排序

上篇介绍了排序算法中的插入,选择,希尔和堆排序,本篇讲主要讲解冒泡排序和快速排序。

2303_81060385的博客 5890

汽车UDS诊断之诊断会话控制服务(0x10)深度剖析

DiagnosticSessionControl就是诊断会话控制。 请求消息定义 A_Data类型 参数名称 Cvt 字节值 助记符 #1 诊断会话控制请求SID M 0x10 DSC #2 子功能=[诊断会话类型] M 0x00-0xFF LEV_DS_ ...

心骗小白话的博客 7420

从 Open SQL JOIN 走向 ABAP CDS Association:把查询写成可复用的数据模型

摘要: 本文通过飞行模型示例,对比了ABAP中三种表关联实现方式:Open SQL JOIN、CDS显式JOIN和CDS Association。重点解析了Association的本质是将表关系声明为数据模型语言,使用时通过路径表达式按需展开为JOIN。文章指出路径表达式在不同位置会默认展开为不同JOIN类型(如SELECT列表默认为LEFT OUTER),并演示了如何用[inner]强制指定INNER JOIN。最后结合S/4HANA实际案例,说明Association通过中心化关系定义和路径复用,能有效

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 384

简述冒泡排序与快速排序

简述冒泡排序与快速排序

一恍过去 2万+

手把手教你RK3588 NPU驱动与RKNN Toolkit,AI开发不迷路!

本文详细介绍了RK3588 NPU驱动安装与RKNNToolkit使用方法。首先阐述了RK3588芯片在嵌入式AI领域的优势,包括6TOPS算力和混合量化支持。随后分步骤讲解了NPU驱动安装流程,包括准备工作、编译安装、验证调试及常见问题解决。接着全面介绍了RKNNToolkit的环境搭建、基本使用流程和图像分类实战案例,涵盖模型转换、推理优化等关键环节。最后展望了RK3588在智能安防、工业自动化等领域的应用前景,为开发者提供了完整的嵌入式AI开发指南。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 433

交换排序—冒泡排序和快速排序

本文主要讲解冒泡排序和归并排序。

weixin_60718941的博客 2597

高项备考论文:规划绩效域

高项备考论文:规划绩效域

liuxu324的博客 1129

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

冒泡排序&快速排序

     冒泡排序和快速排序都是一类借助交换进行排序的方法,快速排序是比较简单的一种。      冒泡排序首先将第一个记录的关键字和第二个记录的关键字进行比较,如果第一个记录的关键字大于第二个记录的关键字则将这两个记录的位置进行交换。然后比较第二个记录的关键字和第三个记录的关键字并进行同样的操作。直到比较完第n−1n-1n−1个记录的关键字和第nnn个记录的关键字,以上过程称为第一趟冒泡排序,它使得n个记录中

caoleiwe的博客 1205

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

快速排序与冒泡排序的区别

/*快速排序复杂度和冒泡是一样的,但是又优于冒泡排序 因为在快速排序中它每次找出最大值只是交换下标索引; 而冒泡排序每次交换都是值交换,改变了内存中储存的值。 所以快速排序优于冒泡排序,但是没得什么用,二者的时 间复杂度都是o(n^2),空间复杂度为o(1). */ ```cpp #include<iostream> using namespace std; int main(){ ...

@ZhengLan的博客 2327

lwip-2.0.3

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

冒泡排序与快速排序【C语言】

冒泡排序 基本思想 对有n个记录的序列进行冒泡排序,首先将第一个数字与第二个数字进行比较,若为逆序,则将两个数字的顺序交换。然后比较第二个数字与第三个数字,若为逆序,则将两个数字的顺序交换…依此类推,经过第一轮排序后,最大的数字将“下沉”到最后,每趟的比较次数依次减少。经过n-1轮排序,将得到一个递增的序列。 空间复杂度:O(1) 时间复杂度:O(n^2) 稳定性:稳定 代码实现 n个记录总共要进行n-1趟排序,第i趟的比较次数为n-i次。可以使用双层循环,外层循环控制第几轮排序,内层控制每一轮比较的次数

qq_45028907的博客 1291

冒泡排序的改进算法和快速排序

通过实现快速排序让我对排序算法有了更加深入的理解,希望再接再厉。

微风 6140

冒泡排序与快速排序的比较

冒泡排序易于理解: #include<stdio.h> int main() { int arr[]={99,94,95,92,93,97,96,88,84,89}; int i,j; for(i=0;i<10;i++){ if(i!=9){ printf("%d,",arr[i]); }else{ printf("%d\n",arr[i]); } } for(i=8;i>=0;i--){ for(j=0;j<=i;j++){ if(

qq_52605894的博客 312

快速排序和冒泡排序php

冒泡排序是最基础的排序算法之一,其核心思想在于重复走访过要排序的数列,依次比较相邻的两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。了解并掌握不同的排序算法不仅有助于提高解决问题的能力,还能帮助开发者更好地理解和设计软件系统。希望本文对你有所帮助!无论你是正在学习计算机科学的学生还是寻求提升技能的专业人士,深入理解排序算法都将是一笔宝贵的财富。

chatgpt001的博客 1083

快速排序,冒泡排序

快速排序是面试中最重要的排序。面试官常用这个来考别人,虽然本人鄙视(这个在工作中根本用不到,说实话,真的用这个来筛选别人,有意义吗?),一方面为了面试,一方面觉得快速排序还是挺巧妙的,不过本人更喜欢推排序,以上纯属一个无聊人的牢骚,勿介。 #include<stdio.h> #include <conio.h> void quickSort(int array[], int...

AI_BN的博客 278
上一篇: 使用gulp来对app进行打包构建
下一篇: tradingview使用心得
jacoby_fire
博客等级 码龄10年 231粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值