首页 > 其他分享 >冒泡排序初探

冒泡排序初探

时间:2024-01-10 18:02:44浏览次数:31  
标签:复杂度 元素 交换 冒泡排序 算法 初探 排序

       冒泡排序是一种基于比较和交换操作的排序算法。 每轮冒泡的过程都是从第一个元素开始,将该元素和相邻下一个元素进行比较和交换,使得较大的元素向右移动(如果该元素大于下一个元素,则两个元素交换;如果该元素小于等于下一个元素,则保持不变)。这样一来,每轮冒泡的过程都可以确定一个元素放在正确的位置上,而这个元素就是剩余元素中最大的元素,正确的位置就是剩余位置中的最右侧的位置。这个过程就像是气泡上浮一样,所以叫做冒泡排序。

      分析:

1、冒泡排序是原地排序算法

因为冒泡排序过程中并不需要开辟新的数组空间,只需要常数个变量用于标记或者交换,所以冒泡排序是原地排序算法。

2、冒泡排序是稳定排序算法

在比较交换操作过程中,如果第一个元素大于第二个元素,我们才交换两个元素,两个元素相等时,保持不变。所以两个相等的元素在排序前后的相对位置并不会发生变化,所以冒泡排序是稳定排序算法。

时间复杂度是O(n2)

最好情况

此时数组本身已经有序,冒泡排序只需要一轮就可退出,时间复杂度为O(n)

最坏情况

此时数组本身是逆序的,完成冒泡排序需要n轮,比较的次数为n+(n-1)+(n-2)+...+2+1,时间复杂度为O(n2)

平均情况

鉴于对最坏情况下的时间复杂度分析,得出平均情况下的时间复杂度为O(n2)。

     









































































































































标签:复杂度,元素,交换,冒泡排序,算法,初探,排序
From: https://blog.51cto.com/u_15716707/9183658

相关文章

  • 时间复杂度(常数循环、strchr、冒泡排序、二分查找)
    1.1常数循环//计算复杂度voidFunc4(intk){intcount=0;for(intk=0;k<100;++k){++count;}printf("%d\n",count);}时间复杂度为:O(1)  注:O(1)不是代表算法只能运行一次,是常数次1.2strchr的时间复杂度//计算strchar的时间复杂度constchar*strchr(constc......
  • 特斯拉神经网络初探
     先递上特斯拉的AI模型HydraNets(2020)  2022年,特斯拉宣布将在其自动驾驶车辆中发布一种全新的算法:OccupancyNetworks,主要用来解决以下两个问题:问题1:检测到的物体不是数据集中训练的对象;问题2:在基于LiDAR的系统中,可以根据检测到的物体确定对象的存在但在计算机视觉系统......
  • 鸿蒙初探
    初印象:鸿蒙系统可以开发一个项目,编译之后可以运行在华为系列的多个系统中,且系统间可进行数据传输?。使用虚拟像素vp,使元素在不同密度的设备上具有一致的视觉体量。在不同密度的设备之间,HarmonyOS会针对性的转换设备间对应的实际像素值。vp:虚拟像素(virtualpixel)是一台设备针对......
  • STM32采集传感器数据通过冒泡排序取稳定值
    STM32采集传感器数据通过冒泡排序取稳定值一、前言在物联网、单片机开发中,经常需要采集各种传感器的数据。比如:温度、湿度、MQ2、MQ3、MQ4等等传感器数据。这些数据采集过程中可能有波动,偶尔不稳定,为了得到稳定的值,我们可以对数据多次采集,进行排序,去掉最大......
  • https初探
     1、服务器环境,两台服务器做前端代理,两台服务器做后端真实服务器。这里都是nginx代理服务器后端服务器172.16.5.50172.16.5.52172.16.5.51172.16.5.52 2、 后端两台服务器修改nginx配置文件:cd/etc/nginx/conf.dvimwww_hello80.conf###server{......
  • 初探oxyplot
    usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.IO;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms......
  • 【模版】冒泡排序
    刚学C++时书上就会写这个qwq属于最简单的排序算法惹。算法步骤比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对......
  • 数据结构算法---冒泡排序
    冒泡排序(BubbleSort)是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻两个元素并按照大小交换位置,直到整个列表排序完成。这种排序算法得名于越小的元素会经由交换慢慢"浮"到列表的顶端。下面是冒泡排序的基本步骤:从列表的第一个元素开始,比较它与下一个元素的大小。如果......
  • java之冒泡排序
    冒泡排序原理:从第一个数开始,和后面一个数比较大小,根据升序或者降序,看是否需要互换位置。每一轮会把1个数罗列到正确位置,经过数组长度-1轮比较,排序完成。比如:对数组{11,55,33,22,44}进行升序排列数组长度是5,需要经过5-1轮,每一轮需要比较5-当前轮次。publicc......
  • 算法学习笔记二一冒泡排序
    目录什么是冒泡排序算法原理代码示例什么是冒泡排序​对给定数组进行遍历,每次比较相邻两个元素大小,若大的数值在前面则交换两数位置(升序),每完成一趟遍历数组中最大的元素都会上升到数组的末尾,这也是冒泡一词的由来。算法原理(升序)列表每相邻的数,如果前面比后面大,则交换这两个数......