SelectSort 选择排序算法:

总的时间复杂度为O(n^2)

思路是,外循环先遍历第一个数至倒数第二个,设置最小的那个数的索引,内循环为从i+1开始遍历到最后一个,找出有没有比当前最小数索引小的索引,若有,进行交换,难度不大~

性能优于冒泡排序

//选择排序(排序后为从小到大)
#include <iostream>
#include <algorithm>
using namespace std;void SelectSort(int (&a)[7]){//数组作为引用形参传入,使用在此修改对原数组也有效int aSize = sizeof(a) / sizeof(a[0]);//取数组的大小  int min;//设置最小的那个数的索引for (int i = 0; i < aSize - 1; ++i){//遍历第一个数至倒数第二个min = i;//初始最小的数的索引为ifor (int j = i + 1; j < aSize;++j){//从i+1开始遍历到最后一个if (a[j] < a[min]){//若成立,则将小的那个数的索引j赋给minmin = j;}}if (min != i){//如果最小的数的索引不等于初始的i,则进行交换,将此时最小的数换到i位置swap(a[min], a[i]);}}
}int main(){ int a[] = {12, 42, 6, 17, 32, 4, 19 };cout << "Before Sorted:" << endl;for (size_t i = 0; i < 7; ++i){//输出 cout << a[i] << " ";}cout << endl;SelectSort(a);cout << "After Sorted:" << endl;for (size_t i = 0; i < 7; ++i){//输出cout << a[i] << " ";}cout << endl;return 0;
}

程序输出结果:

SelectSort 选择排序相关推荐

  1. java选择排序解释_选择排序

    号内回复数据结构,获取整套算法视频 本文作者:skywang12345 欢迎点击下方阅读原文 选择排序介绍 选择排序(Selection sort)是一种简单直观的排序算法. 它的基本思想是:首先在未 ...

  2. ❤️万字总结八大排序:冒泡排序,选择排序,插入排序,堆排序,希尔排序,归并排序,计数排序❤️

    目录 主要排序算法性能对比 冒泡排序 选择排序 插入排序 堆排序 希尔排序 快速排序 Hoare版 挖坑版 前后指针法 归并排序 计数排序 海量数据的排序问题 主要排序算法性能对比 冒泡排序 各位同学 ...

  3. 都是❤️两层循环❤️的冒泡排序,选择排序,插入排序该怎么区分

    目录 冒泡排序 选择排序 插入排序 这三个排序都有两层循环这是他们表面的特点,我把外部循环叫大循环,内部循环叫小循环,他们算法根本思想都有相同点,就是将待排序序列分为无序区间和有序区间,每过一次大循环 ...

  4. 【排序算法】选择排序(Selection sort)

    选择排序(Selection sort)是一种简单直观的排序算法. 选择排序介绍 它的基本思想是: 首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置:接着,再从剩余未排序的元 ...

  5. 顺序表的建立,插入,删除,二分(折半)查找,监视哨查找,冒泡排序,选择排序,直接插入排序

    数据结构课程中学的顺序表,在顺序表中进行删除,查找,排序. 第一次编辑,排版什么的可能有不对的地方,但是程序我跑过了,应该是没问题的,这个其实是我期末上机考试的题. 注释还蛮多的,所以我就直接把代码贴 ...

  6. 数据算法之选择排序(selectSort)的Java实现

    本文的代码来自于<数据结构与算法(JAVA语言版)>,是笔者在网上找到的资料,非正式出刊版物.笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论. 选择排序的基本思想是在待排 ...

  7. 经典算法学习——直接选择排序

    直接选择排序和直接插入排序相似,都将数据分为有序区和无序区,所不同的是直接插入排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区.而直接选择排序是从无序区选一个最小的元素直接放到有序区的 ...

  8. 三种基本排序的实现及其效率对比:冒泡排序、选择排序和插入排序

    1 public class ThreeTypesOfBaseSort { 2 // ========================== 三种基本排序的效率对比 ================== ...

  9. 【Java常识】7.0 数组实现冒泡排序、选择排序和二分查找

    1.0 冒泡排序原理 冒泡排序就是:轻的上浮,沉的下降.小的往前排,大的往后走. 原理:若一个N个元素的数组,两个相邻位置比较,如果前面的元素比后面的元素大就换位置. 每一次比较,都是相对最沉的到位. ...

最新文章

  1. 医学影像阅读/分析软件FSLeyes安装避坑+核磁共振影像数据处理
  2. 网络推广中常见的网站建设细节中有哪些重点值得网络推广专员重视?
  3. 设计模式(一)————策略模式(张三的故事??)
  4. jar包天天见,可是你知道它的运行机制吗
  5. mysql不能通过ip地址访问权限_解决mysql中只能通过localhost访问不能通过ip访问的问题...
  6. Java 练习:编写 Java 程序,输入年份和月份,使用 switch 结构计算对应月份的天数。月份为 1、3、5、7、8、10、12 时,天数为 31 天。月份为 4、6、9、11 时,天数为 3
  7. 安防监控必备的基础知识
  8. 为什么jsp的form表单不能跳转_UI设计干货分享:设计语言 - 表单(登录/注册)...
  9. css3导航渐变 滑过显示动画
  10. oracle快速解析,教你用Oracle解析函数快速检查序列间隙
  11. 禁忌搜索算法(Tabu Search)
  12. usb接口和计算机通信,USB接口是如何进行通信的?
  13. DIY智能家居语音助理——语音智控万物
  14. 海康摄像头之FTP服务器搭建及使用
  15. 【Vue3】Vue3+Vite前端在组件中直接使用svg图标icon(实现设计稿的icon解决方案)
  16. 【TUG 话题探讨003】TUG 专家们如何做 TiDB 性能调优
  17. 模拟电路笔记(三)放大器
  18. 如何最快恢复逻辑备份
  19. iOS自动打包,并上传蒲公英
  20. 部署cirros_vm2 和second_local_net - 每天5分钟玩转 OpenStack(131

热门文章

  1. Ubuntu 20.04 安装 .deb 文件报 failed to install file: not supported
  2. 一个大胖鲸-Docker(2):简单的几个docker命令
  3. Squeeze-and-Excitation Networks(SENet )
  4. SAGAN(G-lab介绍)
  5. 超分辨率技术,随机噪声
  6. linux定时执行一个脚本
  7. ES6+REACT+MIXIN
  8. ArrayList理解(5)与vector区别
  9. docker 使用技巧
  10. HbuliderX + vue项目(初始化创建) - 准备篇