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

C++选择排序原理及实现

原理

假设有一个数组,目标是按升序排序,选择排序就是从下标为0的地方开始,依次往后比较,找到后面的元素中比他最小的元素,将他们两个位置进行交换,然后再遍历下一个。

实现

我这里是用x代表获取到的最小元素对应的下标,在第一层循环初始化为i,temp是用于跟踪最小元素的值,在双层循环里面获取最小元素的值和下标,如果获取的不是vec[i]元素自己,就进行交换,我是直接写出来了,展示以下交换逻辑,也可以使用vector的swap()函数直接交换,就用不上temp变量了。代码:

void selectsort(vector<T> vec) {T temp;T x;//存储找到的temp的元素下标for (auto i = 0; i < vec.size()-1; i++){temp = vec[i];x = i;for (auto j = i+1; j< vec.size();j++) {if (temp > vec[j]) { temp = vec[j];x = j;}}if (x!=i) {vec[x] = vec[i];vec[i] = temp;}}cout << "选择排序(升序排序):";for (auto i = 0; i < vec.size(); i++){cout << vec[i];if (i!=vec.size()-1) {cout << ",";}}cout << endl;
}

注:我故意只传值不修改原数组,毕竟我这个数组还要用来写其他的排序算法,懒~

相关文章:

  • MySQL数据库 - 锁
  • 焕活身心,解锁健康养生新方式
  • [密码学基础]GMT 0029-2014签名验签服务器技术规范深度解析
  • 基于Python的中国象棋小游戏的设计与实现
  • Datawhale AI春训营学习笔记
  • 深度解析算法之二分查找(2)
  • JMETER使用
  • 电脑端移植至手机平板:攻克难题,仙盟架构显神通——仙盟创梦IDE
  • 每日算法-250419
  • 【人工智能学习-01-01】20250419《数字图像处理》复习材料的word合并PDF,添加页码
  • React-在使用map循环数组渲染列表时须指定唯一且稳定值的key
  • 利用 i2c 快速从 Interface 生成 Class
  • 2000-2017年各省城市天然气供气总量数据
  • 【MySQL】数据库约束
  • 5.Chromium指纹浏览器开发教程之编译发布版本
  • 前沿篇|CAN XL 与 TSN 深度解读
  • 从零开始学A2A四:A2A 协议的高级应用与优化
  • Rocky8 升级 Python 3.9.20 并部署 Airflow 2.10.5
  • 2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(六级)真题
  • VASP 6.4.1 Ubuntu系统编译安装手册
  • 由“环滁皆山”到“环滁皆景”,滁州如何勾勒“文旅复兴”
  • 上海一季度人民币贷款增4151亿,住户存款增3134亿
  • 美肯塔基州长警告:关税或致美家庭年增数千美元支出
  • 特朗普称美联储主席鲍威尔“应该尽早下台”
  • 中国将召集安理会非正式会议讨论美加征关税问题?外交部回应
  • 五连冠创造历史!居文君击败谭中怡完成国象棋后战卫冕