冒泡排序
冒泡排序
哈楼大家好!这是fish的第一篇文章,之后打算先给大家仔细分享一下十大排序的内容,今天我们讲第一个冒泡排序
冒泡排序(Bubble Sort)是一种简单直观的排序算法,它每次比较两个元素的大小,数组跑完一次就相当于排序好一个数。
算法步骤#
每一次遍历一遍数组,在遍历的时候比较相邻两个元素的大小,看个人按照升降序把合适的数放到第二个位置上。
针对所有的的元素重复上面的步骤,遍历n(数组的大小)次就相当于整个数组排序完成。
实例演示#
总共6个数的排序,按照从小到大:3 38 5 1 9 4
遍历第一次,排序出一个最大的数
经过一次的循环遍历,最大的数38就已经来到了最末端的位置。
遍历第二次,就会排序好第二大的数到倒数第二个位置。
这里我们可以看到由于最后一个数的位置已经确定,我们可以省略一次比较,后续的遍历同理,遍历六次就排序好了6个数。
代码实现#
template <class T>
void bubble_sort(std::vector<T> &arrs) {
int n = arrs.size(); // 获取数组的大小
for (int idx_i = 0; idx_i < n; ++idx_i) {
for (int idx_j = 0; idx_j < n - idx_i - 1;
++idx_j) { // 为什么是 < n - idx_i:
// 每遍历一次就排序好一个数,下一次直接跳过后续排好的位置
if (arrs[idx_j] > arrs[idx_j + 1]) { // 根据需要判断,交换两个数
T temp = arrs[idx_j];
arrs[idx_j] = arrs[idx_j + 1];
arrs[idx_j + 1] = temp;
// std::swap(arrs[idx_j], arrs[idx_j + 1]);
}
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)