【C语言】冒泡排序算法和冒泡排序的时间复杂度

2023-05-16

提示:冒泡排序算法是非常重要的算法,一定要熟练掌握。思路可以参考一位大佬博主的博客:帅地。介绍的十分详细,理解了之后,可以参考我的代码
,是入门级别的,比较好懂。关于时间复杂度是数据结构的内容,没学过的请至我的博客:【数据结构】时间复杂度。

文章目录

  • 一、代码的实现
  • 二,冒泡排序的时间复杂度


一、代码的实现

#include<stdio.h>
void bubble_sort(char* a, int sz)
{
	int i = 0;
	int j = 0;
	int temp = 0;
	//标记法:如果一开始或中途就已经排序完成
	//我们就要及时终止循环,不然前面都排好了,我们为什么还要在那一个个交换,岂不是浪费时间?
	//所以我们要判断什么时候排序完成,就用标记法
	//每趟都要判断是否已经排序好了
	int flag = 0;
	for (i = 0; i < sz - 1; i++)//趟数
	{
		flag = 1;
		//比较次数
		//第一趟,俩俩比较9次,找最大的泡泡都排排到最右边,既然一个大泡泡已经排序好了
		//即还剩9个泡泡还没排序,第二趟,俩俩比较8次(比较次数减一),找到剩下的9个泡泡
		//的较大泡泡排到倒数第二个位置,依次下去
		for (j = 0; j < sz - 1 - i; j++)
		{
			if (a[j] > a[j + 1])
			{
				//学习交换两个变量时,灵活应用临时变量
				temp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = temp;
				//如果进入这,就说明还没排序好
				flag = 0;
			}
		}
		if (flag == 1)
		{
			break;
		}
	}
}
int main()
{
	char arr[] = { 0,1,2,3,4,5,6,7,8,9 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	bubble_sort(arr, sz);
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

二,冒泡排序的时间复杂度

假设我们只冒泡排序4个数,也就是我们需要排序3趟,第一趟比较俩俩比较3次,第二趟2次,第三趟1次,合起来一共3+2+1=6次。按照这样的算法,如果我们要冒泡排序N个数,也就是我们需要冒泡排序N-1趟,即我们一共要比较(N-1)+(N-2)+(N-3)+(N-4)+…+3+2+1=(N-1)(1+N-1)/2=N(N-1)/2。所以根据时间复杂度的算法,冒泡排序法的时间复杂度为O(N^2)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【C语言】冒泡排序算法和冒泡排序的时间复杂度 的相关文章

  • rosdep update 出现time out 连接超时的问题(非常有效)

    问题 xff1a 在安装ros过程中 xff0c 按照官网执行rosdep update的指令大概率会出现如下报错 xff1a ERROR error loading sources list 39 The read operation t
  • 手把手教你写第一个Windows窗口

    第一个Windows窗口 效果展示详细过程设计窗口类注册窗口类创建窗口显示窗口更新窗口消息循环 源代码实用工具图标制作软件图标库 效果展示 第一个Windows窗口 详细过程 设计窗口类 首先 xff0c 自定义窗口类型名和窗口标题 xff
  • 把当前ubuntu16.0.4系统做成镜像<iso>

    Systemback是一个Ubuntu系统中用于发布自定义系统镜像和系统备份的软件 有时候我们对自己的Ubuntu做了很多设置 xff0c 比如各种软件包 xff0c 各种自定义的配置 我们想要在另一台电脑上也安装一个和我们一模一样的系统
  • VS2010开发ribbon风格的程序

    转自 xff1a http blog csdn net akof1314 article details 5268071 创建MFC应用程序项目 实际上 xff0c Ribbon界面 Office 2007风格的界面 的开发早在2008年就
  • win10下载DEVC++5.11

    作为一款免费开源的 C C 43 43 IDE xff0c 内嵌 GCC 编译器 xff08 GCC 编译器的 Windows 移植版 xff09 xff0c 且是 NOI NOIP 等比赛的指定工具 xff0c Dev C 43 43 的
  • ros实现串口通信(记录一次脱发的经历)

    组长发布任务 xff0c 我负责使用ros实现串口通讯 怎么说呢 xff0c 头发可以在地上 桌子上甚至任何地方 xff0c 除了头上 经过询问 xff0c 任务大概分为三个点 xff1a 1 接收话题名为 config detector
  • C++的第五个实验

    又是两周一次的C 43 43 实验时间 xff0c 最近事可真是太多了 问题一 1 检查下面的程序 xff0c 找出其中的错误 xff0c 并改正之 然后上机调试 xff0c 使之能正常运行 题目一 span class token mac
  • 当我第一次在ubuntu20.04上使用gazebo

    突然就有了一个长期任务 xff0c 过分emo了 学习第一步 xff0c 试试在我的不知道重装了多少遍的ubuntu20 04上运行一个gazebo小车模型 是根据这个视频做的记录 xff0c 如有问题 xff0c 欢迎指正 一 安装gaz
  • STM32——MPU6050六轴传感器

    一 xff0c 什么是MPU6050 MPU6050是InvenSense公司推出的全球首款整合性6轴运动处理组件 xff0c 内带3轴陀螺仪和3轴加速度传感器 xff0c 并且含有一个第二IIC接口 xff0c 可用于连接外部磁力传感器
  • cuda10 + vs2017 下载安装,配置环境

    一 准备 1 xff0c 首先查询电脑GPU xff1a 1 xff09 Win10如何查看Nvidia支持的CUDA版本 xff1a xff08 1 xff09 打开 控制面板 xff0c 点击 硬件和声音 xff0c 点击 NVIDIA
  • Stratis和VDO高级存储

    Stratis和VDO高级存储 Stratis和vdo高级存储Stratis高级存储简介配置stratis服务 VDO高级存储简介配置VDO服务 Stratis和vdo高级存储 Stratis高级存储 简介 Stratis原理 xff1a
  • C语言 strstr函数的用法及模拟实现strstr函数

    C语言 strstr函数的用法及模拟实现strstr函数 一 strstr函数的用法二 模拟实现strstr函数的功能 一 strstr函数的用法 1 strstr函数原型 xff1a char strstr const char str1
  • Linux【shell命令以及运行原理】【权限】

    目录 一 shell命令以及运行原理 二 权限 1 用户的权限 2 文件的权限 3 权限的相关操作 第一种方法 第二种方法 改变所有者和所属组 常见的权限问题 1 目录的权限 xff1a 2 umask 粘滞位 如何将用户添加到信任列表赋予
  • 【Oracle】ORA-28000解决方法

    ORA 28000 账号被锁定 错误原因 xff1a 数据库中设置了密码最 错误次数为10次 xff0c 超过10次后导致账号被锁定 解决方案1 xff1a 1 查看 户使 的概要 件名 xff0c 般为DEFAULT SELECT USE
  • dpkg命令的用法

    dpkg命令的用法 dpkg 是Debian package的简写 xff0c 为 Debian 操作系统 专门开发的套件管理系统 xff0c 用于软件的安装 xff0c 更新和移除 所有源自 34 Debian 34 的Linux的发行版
  • 关于正则表达式的学习

    今天在写cpp题目的时候被字符串搜索恶心坏了 于是乎开始自学正则表达式 正则regex其实就是一个规范化的模板字符串 第一条 基础语法和注意事项 另外 在使用转义特殊字符的时候 要用到两个 才能有效果 b才代表一个数字 才能代表一个 34
  • 扩展卡尔曼滤波(EKF)

    本篇文章是看完http blog csdn net adamshan article details 78265754这篇文章后再加上自己的理解写的 xff0c 如果侵权可以联系我删除 xff0c 如果有不对的地方请您不啬赐教 xff01
  • OVS 基本操作命令

    1 ovs vsctl获取或者更改ovs vswitchd的配置信息 xff0c 此工具操作的时候会更新ovsdb server中的数据库 查看网桥 ovs vsctl show 添加网桥 ovs vsctl add br br0 创建po
  • 解决c++string类型变量无法输出中文的问题(环境:mingw+vscode)

    我也是在网上找了好久解决办法 其实很简单在visual code终端中输入chcp 936即可
  • 利用ros进行双目相机标定(发布双目相机话题再用cameracalibrator.py文件进行标定)

    1 创建工作环境 mkdir p opencv test src cd opencv test src catkin create pkg stereo camera std msgs roscpp rospy 2 修改CMakeLists

随机推荐