十大经典排序算法系列博客——>传送门


选择排序是一种简单直观的排序算法,首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

算法步骤:

  • 初始状态:无序序列为R[0,n−1],长度n,有序区为空;

  • 第i=1,…,n−1趟排序从当前无序区R[i−1,n−1]中选出最小的元素R[k],并将它与无序区的第1个记录R[i−1]交换,则R[0,i−1]变为元素个数增加1的新有序区,R[i,n−1]变为元素个数减少1的新无序区;

  • n−1趟选择交换后结束。

代码展示

#include<iostream>
using namespace std;
void SelectSort(int a[],int n)//选择排序
{for(int i=0; i<n-1; i++){int index=i;for(int j=i+1; j<n; j++){if(a[j]<a[index])//寻找无序区内的最小值index=j;}if(index!=i)             //把找到的最小值放到无序区的最前面{int tmp=a[index];a[index]=a[i];a[i]=tmp;}}
}
int main()
{int a[5]={7,3,1,5,70};SelectSort(a,5);return 0;
}

日拱一卒,功不唐捐。

【GIF动画+完整可运行源代码】C++实现 选择排序——十大经典排序算法之二相关推荐

  1. 【GIF动画+完整可运行源代码】C++实现 基数排序——十大经典排序算法之十

    十大经典排序算法系列博客-->传送门 基数排序是按照低位先排序,然后收集:再按照高位排序,然后再收集:依次类推,直到最高位.有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序.最 ...

  2. 【GIF动画+完整可运行源代码】C++实现 堆排序——十大经典排序算法之七

    十大经典排序算法系列博客-->传送门 堆排序Heapsort是指利用堆这种数据结构所设计的一种排序算法.堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大 ...

  3. 【GIF动画+完整可运行源代码】C++实现 快速排序——十大经典排序算法之六

    十大经典排序算法系列博客-->传送门 ##### 1.快排的实现逻辑: 先从数列中取出一个数作为基准数(通常取第一个数). 遍历序列,将比它小的数与比它大的数分别记录下来,分为两类,最后该数放在 ...

  4. 【GIF动画+完整可运行源代码】C++实现 归并排序——十大经典排序算法之五

    十大经典排序算法系列博客-->传送门 简介:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,是采用分治法Divide and Conquer的一个非常典型的应用.分Divide: ...

  5. 【GIF动画+完整可运行源代码】C++实现 插入排序——十大经典排序算法之三

    十大经典排序算法系列博客-->传送门 插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法步骤: 从第一个元素开始,该元素认为已经被排序: ...

  6. 【GIF动画+完整可运行源代码】C++实现 冒泡排序——十大经典排序算法之一

    十大经典排序算法系列博客-->传送门 冒泡排序重复地遍历待排序的数列,每次比较两个相邻元素,如果它们的顺序错误就把它们交换.重复地进行遍历直到没有再需要交换时表示数列已经排序完成. 算法步骤: ...

  7. C++实现桶排序——十大经典排序算法之九【GIF动画+完整代码+详细注释】

    十大经典排序算法系列博客-->传送门 桶排序是计数排序的升级版.它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定.桶排序 (Bucket sort)的工作的原理:假设输入数据服从均 ...

  8. 【GIF动画+完整可运行源代码】C++实现 计数排序——十大经典排序算法之八

    十大经典排序算法系列博客-->传送门 计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中. 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确 ...

  9. 【GIF动画+完整可运行源代码】C++实现 希尔排序——十大经典排序算法之四

    十大经典排序算法系列博客-->传送门 希尔排序由Shell在1959年发明,又叫缩小增量排序,是第一个突破O(n^2)的排序算法,属于简单插入排序的改进版,会优先比较距离较远的元素. 算法步骤: ...

最新文章

  1. pp模块中关于物料反冲的探讨
  2. 【VMware vSphere】VMware vSphere简单了解
  3. 牛客多校2 - Greater and Greater(bitset优化暴力)
  4. 使用docker的mysql镜像
  5. rabbitmq如何保证消息不被重复消费_RabbitMQ保证消息可靠投递与消费的正确使用姿势...
  6. threejs- z-fighting 问题
  7. 怎么提升笔记本显卡性能
  8. 第四季-专题12-按键驱动程序设计
  9. Unity 脚本入门教程
  10. 机器学习(14)——激活函数
  11. 混沌数学之Lorenz(洛伦茨)吸引子
  12. 系统自带的微软拼音输入法,在输入字母和数字的时候,间隔变大,输入中文没事的 问题。
  13. 【noi.ac #1997】A. 制胡窜
  14. NI PXI-6221(16路模拟输入)校准小记
  15. 值得品读的感悟人生的经典句子 - 格言网(转载)
  16. 赛尔号和赛尔机器人_赛尔号9:赛尔机器人与艾里逊交战,赛尔机器人战败?...
  17. 最近喜欢的几款乐器和民谣
  18. 吱口令代付|淘宝天猫教程|找人代付|淘宝代付源码
  19. 网页学习——创建HTML框架(frameset、frame、iframe)
  20. Alibaba大牛常读的10本Java实战书籍,(Java开发进阶必备书单),可以白嫖了

热门文章

  1. leetcode-136. 只出现一次的数字解法
  2. 130 道 K8s + Docker + DevOps 大厂面试题及知识点详解
  3. 聊一聊单机、集中式、分布式和云原生存储
  4. JAVA多线程之UncaughtExceptionHandler——处理非正常的线程中止
  5. LiveVideoStackCon 2018社区编辑门票兑换启动
  6. 腾讯极客挑战赛邀你“码上种树”
  7. nginx rtmp module 代码详解 各模块主要功能
  8. Nginx-1.9.8推出的切片模块
  9. CentOS7系统上Kubernetes集群搭建
  10. kubernetes1.8.4 安装指南 -- 9. calico