每日一题:冒泡排序

news/2025/2/14 3:00:17/

每日一题:冒泡排序

  • 每日一题:冒泡排序
  • 第一种写法:
  • 第二种写法:

每日一题:冒泡排序

冒泡排序是八大排序中较为简单的一种,具体详细可见:冒泡排序_百度百科 (baidu.com)

我们重点来看冒泡排序的步骤:

冒泡排序(Bubble Sort)

算法步骤

1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

3、针对所有的元素重复以上的步骤,除了最后一个。

4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

看起来有些抽象,这里我们要详细理解清楚步骤的解决方式,来看下图:

image-20221206165317665

这就是冒泡排序的思想,我们来看代码怎么实现:

第一种写法:

#include<stdio.h>int main()
{int arr[] = { 9,8,7,6,5,4,3,2,1 };int i = 0;int sz = sizeof(arr) / sizeof(arr[0]);//先确定一共几趟for (i = 0; i < sz-1; i++){int j = 0;//一趟排序for (j = 0; j < sz - 1 - i; j++){if (arr[j] > arr[j + 1]){int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}for (i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}

当然了,冒泡排序也是可以用于乱序的数列的。

上面的冒泡排序是一种写法,还有一种写法与之差不多,但是有点小细节需要注意:

第二种写法:

#include<stdio.h>int main()
{int arr[5] = { 5 ,4 ,3 ,2 ,1 };int i = 0;int sz = sizeof(arr) / sizeof(arr[0]);//先确定一共几趟for (i = 0; i < sz - 1; i++){int j = 0;//一趟排序for (j = i+1; j < sz ; j++){if (arr[i] < arr[j]){int tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;}}}for (i = 0; i < sz; i++){printf("%d,", arr[i]);}return 0;
}

上面两种方式有一些小小的需要注意的地方,我们来对比一下:

image-20221206175924099

好了,一个简单的冒泡排序今天复习一下。三天不练门外汉,勤于复习肯定是好习惯。


http://www.ppmy.cn/news/2286.html

相关文章

信号和电源隔离的有效设计技术

介绍 如今&#xff0c;电子产品设计师比以往任何时候都更面临着一系列共同的目标&#xff1a;实现更高的吞吐量、更高的分辨率、更高效的系统和缩短上市时间。在工业自动化、医疗电子或电信系统等领域&#xff0c;通常需要电隔离多个信号&#xff0c;以使子系统能够共享数据或…

什么是JDBC?JDBC程序的具体实现步骤

什么是JDBC?JDBC程序的具体实现步骤JDBC的全称是Java数据库连接&#xff08;Java Database Connectivity)&#xff0c;它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系数据库&#xff0c;并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作。应…

React - setState 更新状态的两种写法

React - setState 更新状态的两种写法一.对象式的 setState二. 函数式的 setState三. 对象式的setState 对比 函数式的 setState四. 一个 setState 使用组件实例setState() 将对组件 state 的更改排入队列&#xff0c;并通知 React 需要使用更新后的 state 重新渲染此组件及其子…

详解设计模式:解释器模式

解释器模式&#xff08;interpreter pattern&#xff09;&#xff0c;是在 GoF 23 种设计模式中定义了的行为型模式。 解释器模式 这种模式被用在 SQL 解析、符号处理引擎等。 解释器模式 给定一个语言&#xff0c;定义它的文法的一种表示&#xff0c;并定义一个解释器&#xf…

Java高效率复习-数据类型和运算符[Java]

第一篇关于JavaSE内容的文章 文章的风格比较涣散&#xff0c;但是都是干货&#xff0c;关于Java系列的&#xff0c;还有就是&#xff0c;我认为只有MySQL基础和JavaSE基础是可以做到可操作性和可执行性较强的。 如果像JavaWeb或者SSM框架这些&#xff0c;光看文章你是根本执行…

gnn神经网络是什么,gnn神经网络代码

1、gnn什么意思? 指图形神经网络。 生物神经网络主要是指人脑的神经网络&#xff0c;它是人工神经网络的技术原型。人脑是人类思维的物质基础&#xff0c;思维的功能定位在大脑皮层&#xff0c;后者含有大约10^11个神经元。 每个神经元又通过神经突触与大约103个其它神经元…

vue - vue使用echarts实现中国地图和点击省份进行查看

文章目录1&#xff0c;实现的效果和功能2&#xff0c;安装ECharts3&#xff0c;main.js里面引入echarts4&#xff0c;实现如下5&#xff0c;遇到的问题6&#xff0c;用到的模拟数据1&#xff0c;实现的效果和功能 vue使用echarts实现中国地图和点击省份进行查看&#xff1b; 下…

【C++】C++11新特性

目录 一.列表初始化initializer_list 1.什么是列表初始化 2.列表初始化的原理 二.auto/decltype/nullptr 1.auto - 自动类型推导 2.decltype - 指定类型 3.nullptr - C空指针 三.范围for 四.右值引用/移动构造/移动赋值/万能引用/完美转发 1.什么是右值 2.左值与右值…