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

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;
}

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

http://www.xdnf.cn/news/558.html

相关文章:

  • Python带有else子句的循环语句
  • 动态内存管理
  • [dp20_完全背包] 介绍 | 零钱兑换
  • PSN港服跳过生日找回密码(需要英语对话,需要注册的id)
  • 超大文件处理——文件强制切割:突破存储传输限制,提升数据处理效能—星辰大文化术——未来之窗超算中心
  • 小样本学习和元学习
  • STM32学习笔记汇总
  • 图 - 最短路径算法 -- Dijkstra -- Bellman-Ford -- Floyd-Warshall
  • 每日OJ_牛客_最小差值_排序_C++_Java
  • 链表面试题
  • element-plus样式失效的原因总结
  • Linux 桌面环境 LXQt 2.2 发布
  • 放松大脑的方法
  • dev_set_drvdata、dev_get_drvdata使用详解
  • 加密与解密完全指南,使用Java实现
  • 图 - 最小生成树算法 - Kruskal - Prim
  • 基于有效样本数的类别平衡损失 (Class-Balanced Loss, CVPR 2019)
  • AOSP的Doze模式-LightIdle初识
  • 企业级RAG选择难题:数据方案的关键博弈
  • Mysql从入门到上手(一)-Mysql安装和Navicat安装及使用.
  • 【Python标准库】数学相关的9个标准库
  • 基于模态关系理解的无人机视觉语言导航模型
  • 解决Ubuntu图形化界面操作适配问题
  • CRT(阴极射线管)终端控制器
  • rebase和merge的区别
  • 【FreeRTOS进阶】优先级翻转现象详解及解决方案
  • MLLMs for TSAD ?
  • 代码审计入门 原生态sql注入篇
  • 如何对docker镜像存在的gosu安全漏洞进行修复——筑梦之路
  • LeetCode 热题 100:回溯