冒泡排序
基本思想:
从第一个数开始,不断比较两个相邻的数,如第1个和第2个比较,第2个和第3个比较,依次比,直到比完第一轮选出了最大的数;
第二轮则选出第二大的数,最多进行n-1轮比较。
代码:
void bubble_sort(int a[], int m) { for (int i = 0; i < m - 1; i++) { int flag = 1; for (int j = 0; j < m - 1 - i; j++) {//注意j的最大值,因为第一轮选出了最大的数,所以每比较一轮,j的最大值都-1 if (a[j] > a[j + 1]) { flag = 0; int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } if (flag) { break; } } for (int i = 0; i < m; i++) cout << a[i] << " "; cout << endl; }
例子:
【输入形式】
第一行,输入一个整数t(1 ≤ t ≤ 10);将需要做t组计算。
每组由两行数据组成,每组的第一行输入一个整数n表示待排序的数字的个数(1 ≤ n ≤ 1001),每组的第二行有n个由空格分隔开的数字。
【输出形式】每组测试样例输出一行该组按照从小到大排序后的数列,相邻数字间用一个空格分隔开。
【样例输入】
2
3
3 2 5
6
1 2 3 4 7 5
【样例输出】
2 3 5
1 2 3 4 5 7
实现代码:
#include <iostream> using namespace std; void bubble_sort(int a[], int m) { for (int i = 0; i < m - 1; i++) { int flag = 1; for (int j = 0; j < m - 1 - i; j++) {//注意j的最大值,因为第一轮选出了最大的数,所以每比较一轮,j的最大值都-1 if (a[j] > a[j + 1]) { flag = 0; int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } if (flag) { break; } } for (int i = 0; i < m; i++) cout << a[i] << " "; cout << endl; } int main() { int n; cin >> n; for (int i = 0; i < n; i++) { int m, a[1001]; cin >> m; for (int j = 0; j < m; j++) cin >> a[j]; bubble_sort(a, m); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!