蓝桥杯 冒泡排序

冒泡排序的思想

冒泡排序的思想是每次将最大的一下一下移动到最右边,然后将最右边这个确定下来。

再来确定第二大的,再确定第三大的...

对于数组an,具体来说,每次确定操作就是从左往右扫描,如果ai>ai+1,我们将执行

swap(ai,ai+1)将两项交换,然后再往右检查,这样可以找出最大的并将其丢到最右边。

第一次确定操作是将a1~an中最大的放到an;

第二次确定操作是将a1~an-1中最大的放到an-1

依次类推(类似地,如果你想先把最小的放到左边也是可以的) 时间复杂度为O(2^n)。

由于排序过程中,数字像冒泡泡一样从左往右换过去,故名冒泡排序。

冒泡排序的实现

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+9;
int a[N]; 
int main()
{
	int n;cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	
	//i表示当前要确定的位置
	for(int i=n;i>=1;i--){
		
		//j从左往右扫
		for(int j=1;j<=i-1;j++){
			if(a[j]>a[j+1])swap(a[j],a[j+1]);
		} 
	} 
	//输出
	for(int i=1;i<=n;i++)cout<<a[i]<<" \n"[i==n];
	return 0; 
}

例题讲解

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+9;
int a[N]; 
int main()
{
	int n;cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=n;i>=1;i--){
		for(int j=1;j<=i-1;j++){
			if(a[j]>a[j+1])swap(a[j],a[j+1]);
		} 
	} 
	for(int i=1;i<=n;i++)cout<<a[i]<<" \n"[i==n];
	return 0; 
}
相关推荐
故渊at1 分钟前
第五板块:Android 系统服务与电源管理 | 第十八篇:Battery Service 与 电量统计(Fuel Gauge)算法
android·算法·battery·电源·电池·电源管理·电量统计
The_Ticker4 分钟前
港股量化实测:实时行情接口性能与数据质量深度解析
python·websocket·算法·金融
weisian1514 分钟前
基础篇--概念原理-25-大模型的剪枝是什么?怎么理解?——从原理到实战,一篇讲透
算法·机器学习·大模型·剪枝
fie88898 分钟前
基于有限体积法(FVM)的MATLAB流体力学求解程序
算法·matlab
Irissgwe8 分钟前
C++ STL unordered系列关联式容器详解
开发语言·c++·stl·关联式容器
m0_5474866611 分钟前
华南农业大学《C语言程序设计》期末试卷及答案2018-2025年PDF
c语言·开发语言·pdf·c语言程序设计
fqbqrr8 小时前
2606C++,C++构的多态
开发语言·c++
小欣加油9 小时前
leetcode56 合并区间
c++·算法·leetcode·职场和发展
lqqjuly9 小时前
前沿算法深度解析(二)
人工智能·算法·机器学习
Yolo_TvT10 小时前
C++:析构函数
c++