冒泡排序与快速排序

冒泡排序与快速排序比较 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

10-142 6-4 查询厂商“D“生产的PC和便携式电脑的平均价格

分数 10全屏浏览题目切换布局作者 lhm单位 河北农业大学本题目要求编写SQL语句,查询厂商D生产的PC和便携式电脑的平均价格。

dqd66的博客 2750

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

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

weixin_49930962的博客 1846

应用处理器(AP)、系统级芯片(SoC)与微控制器(MCU)的区别与联系

应用处理器(AP)、系统级芯片(SoC)与微控制器(MCU)的区别与联系

a_zxswer的博客 1694

ArduPilot 的 RTOS 选择:为何 ChibiOS 成为现代飞控的首选

本文深入探讨了ArduPilot选择ChibiOS作为现代飞控首选RTOS的原因。通过对比FreeRTOS和NuttX,ChibiOS凭借其50ns中断响应、1.2μs上下文切换时间和高效的资源管理脱颖而出,特别适合处理无人机飞控中的高频传感器融合和实时控制任务。文章还详细分析了ChibiOS在STM32硬件上的优化实践及其在无人机开发中的显著优势。

weixin_29161719的博客 570

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

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

m0_73633144的博客 2158

GB28181 2022 配置信令

基本参数视频参数选项视频参数属性配置巡航轨迹

ww506772362的专栏 1633

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

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

2303_81060385的博客 5890

LDO的原理及测试方法

这是LM317芯片的核心,这个电路单元称为Bandgap Reference带隙基准源。属于模拟集成电路中的经典电路结构。常见的基本结构利用VBE的负温度系数,而VT是正温度系数,正负温度系数抵消就的得到稳定的基准参考电压了(三极管的方程VBE=VT*In(lC/IS))。

shiwei0813的博客 1158

YOLO26改进策略【Neck】| CVPR 2024 MFM(Modulation Fusion Module,调制融合模块):动态特征加权融合,突出关键特征抑制冗余

本文主要利用DCMPNet中的 MFM 模块优化 YOLO26 的目标检测网络模型。模块通过动态调制特征融合过程,实现了对多尺度、跨层级特征的智能聚合。将其应用于的改进过程中,针对目标检测中边界特征与语义信息的互补性需求,缓解网络中浅层细节与深层语义融合不足的问题。Depth Information Assisted Collaborative Mutual Promotion Network for Single Image Dehazing在图像去雾网络中,不同层级和类型的特征包含着互补的信息(如浅层的

Limiiiing的博客 224

简述冒泡排序与快速排序

简述冒泡排序与快速排序

一恍过去 2万+

使用亚组分析进行子组分析并可视化森林图 - R语言

通过亚组分析和森林图的结合,我们可以更好地理解不同子组之间的差异和效果大小。当然,在实际应用中,还需要考虑多种因素,如样本量、异质性等,以得到更准确的结果和结论。每个森林图中的水平线代表了每个子组的效应估计,线的长度表示了该效应估计的置信区间。假设我们有一个包含研究对象的数据框(data frame),其中包括了治疗组和对照组的结果数据,以及一些可能的影响因素作为调整变量。在本例中,我们将比较两种不同的治疗方法(A和B)对结果变量的影响,并调整了一个额外的变量。是结果变量和对照组变量的列名。

2301_79326857的博客 1236

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

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

weixin_60718941的博客 2597

车载以太网网络测试-24【SOME/IP概述】

SOME/IP**(Scalable Service-Oriented Middleware over IP)是一种基于IP网络的面向服务的通信协议,专为汽车电子系统设计,支持服务发现、远程过程调用(RPC)和事件通知等功能。核心标准是由 AUTOSAR(汽车开放系统架构)定义,现已成为车载通信的重要标准之一(如AUTOSAR 4.0+)。SOME/IP的全称是,它是一种基于IP网络的面向服务的通信协议,广泛应用于汽车电子(AUTOSAR)和物联网领域。Scalable(可扩展的)含义。

车载网络测试工程师的博客 2193

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

冒泡排序&快速排序

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

caoleiwe的博客 1205

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

@ZhengLan的博客 2327

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

冒泡排序与快速排序【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、付费专栏及课程。

余额充值