十大排序算法之冒泡排序

目录

前言

十大排序算法包括哪些

 冒泡排序原理

冒泡排序基本信息

代码实现

代码思路

代码实现

实例

【模板】排序

代码

 总结

冒泡排序的工作原理

冒泡排序的步骤

冒泡排序的时间复杂度和空间复杂度

冒泡排序的优缺点

冒泡排序的应用场景


前言

排序是重要又较为简单的算法之一,个人认为学习算法建议先学习排序,排序有十种重要的排序方法,有些好,有些坏。

十大排序算法包括哪些

十大排序算法包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序。

今天我来讲讲冒泡排序。

 冒泡排序原理

冒泡排序的核心思想是通过重复地遍历待排序的序列,比较每对相邻元素的大小。如果前一个元素比后一个元素大,则交换这两个元素的位置。这个过程会一直进行,直到没有需要交换的元素为止。

冒泡排序基本信息

英文名

bubble sort

时间复杂度O(n^2)
空间复杂度O(1)
是否稳定

代码实现

代码思路

  1. 从序列的第一个元素开始,比较相邻的两个元素。
  2. 如果前一个元素大于后一个元素,则交换它们的位置。
  3. 继续下一对相邻元素的比较,直到序列的末尾。
  4. 重复上述步骤,直到整个序列有序排列。

代码实现

/*头文件部分*/
#include <iostream>
#include <algorithm>
using namespace std;
/*冒泡排序部分*/
void bubble_Sort() {
	int a[100001], n;
	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n - i; j++)
			if (a[j] > a[j + 1])
				swap(a[j], a[j + 1]);
	/*输出数组部分*/
	for (int i = 1; i <= n; i++)
		cout << "第" << i << "个数:" << a[i] << endl;
}
/*主函数部分*/
int main() {
	bubble_Sort();
	return 0;
}

实例

【模板】排序

题目描述

将读入的 N 个数从小到大排序后输出。

输入格式

第一行为一个正整数 N。

第二行包含 N 个空格隔开的正整数 ai,为你需要进行排序的数。

输出格式

将给定的 N 个数从小到大输出,数之间空格隔开,行末换行且无空格。

样例1

样例输入1
5
4 2 4 5 1

样例输出1
1 2 4 4 5

本题来自洛谷题目

P1177 【模板】排序icon-default.png?t=O83Ahttps://www.luogu.com.cn/problem/P1177

代码

#include <iostream>
#include <algorithm>
using namespace std;
void bubble_Sort() {
	int a[100001], n;
	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n - i; j++)
			if (a[j] > a[j + 1])
				swap(a[j], a[j + 1]);
	for (int i = 1; i <= n; i++)
		cout << a[i] << " ";
	cout << endl;
}
int main() {
	bubble_Sort();
	return 0;
}

 总结

冒泡排序(Bubble Sort)‌是一种简单的排序算法,其基本思想是通过重复遍历待排序的数列,比较相邻元素并在必要时交换它们的位置,直到数列完全有序。冒泡排序的时间复杂度为O(n^2),适用于数据量较小的情况。

冒泡排序的工作原理

冒泡排序通过重复遍历待排序的数列,比较每对相邻元素的大小。如果它们的顺序错误(例如,从小到大排序时前一个元素大于后一个元素),则交换它们的位置。这个过程会重复进行,直到没有需要交换的元素为止,表示数列已经排序完成。

冒泡排序的步骤

  1. 比较相邻的元素‌:从数列的第一个元素开始,比较相邻的两个数。
  2. 交换元素‌:如果前一个数比后一个数大,则交换它们的位置。
  3. 继续遍历‌:继续这个过程,直到数列的末尾。
  4. 重复操作‌:重复上述步骤,直到整个数列有序。

冒泡排序的时间复杂度和空间复杂度

  • 时间复杂度‌:冒泡排序的时间复杂度为O(n^2),在数据量较大时效率较低。
  • 空间复杂度‌:冒泡排序是原地排序算法,空间复杂度为O(1)。

冒泡排序的优缺点

  • 优点‌:实现简单,容易理解;对于小数据量的排序非常高效。
  • 缺点‌:效率较低,不适合处理大数据量的排序问题。

冒泡排序的应用场景

尽管冒泡排序效率较低,但它适用于数据量较小且对时间要求不高的场景,例如:

  • 小数据量的排序操作。
  • 算法教学和演示。

你学废了吗?

下期预告:十大排序算法之希尔排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值