当前位置: 首页 > news >正文

c++冒泡排序实现

冒泡排序,实际上是将一个数组中从下标为i=0的元素开始,与他的下一个元素比较,如果是升序排列就把大的往后放。

这里数组就直接用stl的vector实现了,主要是练习冒泡排序:

采用双层嵌套的遍历方式,让每一个元素一层一层的和后面的元素进行比较,如果比他大就往上浮,过程就像泡泡慢慢浮出水面,故名冒泡排序,第一层是遍历i个元素,但他必须减去一个1,因为他始终要与他的下一个比较,最后一个元素是不用比较的,如果不减一会导致数组越界。

当一个元素遍历了一遍以后,就会回过头来遍历下一个元素依次和后面的元素比对,不用和他前面的比对,所以是-i-1。

有些人可能会看到我这个函数接受的是值传递,不是引用传递,这里我说一下,我是故意的,我只想这个函数排序输出他排序后的副本,不打算更改原来的数组。

下面是完整的程序:

template<typename T>
void bubblesort(vector<T> vec) {T temp;for (auto i = 0; i < vec.size()-1;++i) {for (auto j = 0; j < vec.size()-i-1; j++){if (vec[j]>vec[j+1]) {temp = vec[j+1];vec[j + 1] = vec[j];vec[j] = temp;}}}cout << "排序结果:";for (size_t k = 0; k < vec.size(); ++k) {cout << vec[k];if (k != vec.size() - 1) cout << ",";}cout << endl;
}

相关文章:

  • 部署rocketmq集群
  • 高效的项目构建:用 Makefile 自动化你的构建过程
  • 【记录】服务器安装ffmpeg
  • 实验4基于神经网络的模式识别实验
  • leetcode 300. Longest Increasing Subsequence
  • C#.net core部署IIS
  • CSS中的`transform-style`属性:3D变换的秘密武器
  • LeetCode 热题 100:回溯
  • sqlilabs-Less之HTTP头部参数的注入——基础篇
  • QML中的3D功能--模型导入与修改
  • QML中的3D功能--入门开发
  • Doris 本地部署集群重启后报错
  • 可发1区的超级创新思路(python 、MATLAB实现):基于多尺度注意力TCN-KAN与小波变换的时间序列预测模型
  • 【信息获取能力】
  • DevOps 进阶指南:如何让工作流更丝滑?
  • 爬虫入门与requests库的使用——python爬虫
  • BMS电池管理芯片BQ76920芯片手册详细解读
  • 不带无线网卡的Linux开发板上网方法
  • 10-DevOps-Jenkins参数化构建实现多版本发布
  • 数据分析与挖掘
  • 美国税局代理局长卷入马斯克与美财长之争,还未工作就被迫离职
  • 建投读书会·东西汇流|西风东渐中的上海营造
  • “隐身”数年后重回公众视野的外滩美术馆
  • 季度市场叙事|时间已不在美国那边
  • 42岁北京大学科学技术与医学史系副教授陈昊逝世
  • 上海警方:男子拍摄女性视频后在网上配发诱导他人违法犯罪文字,被行拘