简单选择排序是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,第一次从下标为0的开始,将下标为0的这个数与后面的n-1个进行比较;找出最小或者最大的放在下标为0的这个位置;第二次从下标为1的开始比较;查询剩下的最大或者最小值;放在下标为1的位置;直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。

概念比较简单,我们直接看代码:

void select_sort(vector<int>& nums,int n){for(int i = 0;i < n;i++){int min = i;for(int j = i+1;j < n;j++){if(nums[j] < nums[min]){min = j;}}if(min != i){int tmp = nums[i];nums[i] = nums[min];nums[min] = tmp;}}
}

选择排序和冒泡排序有点类似,都是将每次循环中的最值移动到数组的一端,可能会令一些人感到混乱,但其实区别地方还是挺多的。

(1)冒泡排序是比较相邻位置的两个数,而选择排序是将一个数与它后面的所有数进行比较,找最大值或者最小值;

(2)冒泡排序每一轮比较后,位置不对都需要换位置,选择排序每一轮比较都只需要换一次位置;

(3)两者不同的比较方式决定了冒泡排序是稳定排序算法,选择排序是不稳定排序算法,举个例子对于数组{ 5,8,5,2,9 } ,对于选择排序,第一遍选择第一个元素5会和2交换,那么原序列中2个5的相对位置前后顺序就破坏了)。

将两种排序算法的动态图放在一起看,会比较容易理解。

选择排序:

冒泡排序:

查询数据的排序的位置_简单选择排序C++实现相关推荐

  1. python选择排序算法图解_简单选择排序算法(C语言详解版)

    该算法的实现思想为:对于具有 n 个记录的无序表遍历 n-1 次,第 i 次从无序表中第 i 个记录开始,找出后序关键字中最小的记录,然后放置在第 i 的位置上. 例如对无序表{56,12,80,91 ...

  2. java 排序原理_简单选择排序算法原理及java实现(超详细)

    简单选择排序的原理 简单选择排序的原理非常简单,即在待排序的数列中寻找最大(或者最小)的一个数,与第 1 个元素进行交换,接着在剩余的待排序的数列中继续找最大(最小)的一个数,与第 2 个元素交换.以 ...

  3. 选择排序java代码_JAVA简单选择排序算法原理及实现

    简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...

  4. 【简单排序算法】:简单选择排序、直接插入排序和冒泡排序

    [简单排序算法]:简单选择排序.直接插入排序和冒泡排序 简单选择排序: 原理:设所排序序列的记录个数为n.i取1,2,-,n-1,每次从所有n-i+1个记录(Ri,Ri+1,-,Rn)中找出最小的记录 ...

  5. 【排序算法】图解简单选择排序(图解堪比Debug显示每次循环结果)

    [排序算法]图解简单选择排序(图解堪比Debug分析每次循环结果) 写在前面: 本文主要介绍简单选择排序算法,通过图片一步步解释每一趟每一次的后移.代码通过C#实现,并输出每一次交换的情况和比较次数, ...

  6. 【数据结构-排序】3.图解选择排序两种实现(简单选择排序/堆排序)

    简单选择排序(选择排序) 排序思想 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾. 以此类推,直到所有元素 ...

  7. 排序算法入门之简单选择排序

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在学了冒 ...

  8. C语言实现各个排序算法(直接插入排序,折半插入排序,希尔排序,冒泡排序,简单选择排序)

    数据结构开发总结报告 --内部排序综合设计程序的编程实现 #include<stdio.h> #define MaxSize 20 #include<windows.h> ty ...

  9. 数据结构-排序(六)简单选择排序

    本文详细介绍了简单选择排序的算法思想.代码实现和算法效率分析,还包括示例和可视化动图,易理解! Let's go!

最新文章

  1. 科研文献|粪便污染可以解释人为影响环境中抗生素耐药基因丰度
  2. 【Unity 3D 游戏开发】Unity3D 入门 - 工作区域介绍 与 入门示例
  3. [SDOI2015]星际战争
  4. opengl加载显示3D模型BVH类型文件
  5. Boost:双图bimap与散列索引的测试程序
  6. 四十三、ETL工具的流程和应用
  7. react redux学习之路
  8. 软件项目验收的准备工作
  9. vue项目条形码和二维码生成工具试用
  10. 番茄花园win11专业版32位系统v2021.07
  11. 显卡,不能显示问题解决
  12. 找回Win8.1(windows server 2012 R2)的双拼
  13. 创建Maven web工程不能解析EL表达式的解决办法
  14. [转载]厚积博发,有的放矢
  15. 紫薇~还记得大明湖畔的HTML5智力拼图吗?
  16. Kibana常用搜索语法
  17. 计算机界面一直闪,电脑光标一直闪烁怎么办?Win7左上角白杠一直闪解决方法...
  18. 浅谈服务器选择固态硬盘的几个优缺点
  19. R语言常见的数据类型及转换
  20. DLL的远程注入技术详解

热门文章

  1. 访问Webservice错误
  2. 浅析何时进行概况分析
  3. 在一个数组中找出和为目标值的那 两个 整数,并返回他们的数组下标python代码(Leetcode1)
  4. 标题要在3~5字之间-三年总结
  5. Python进阶_wxpy学习:消息处理
  6. Python学习笔记:面向对象高级编程(完)
  7. 【随笔】激活函数是怎样一种存在?
  8. [云炬创业基础笔记]第四章测试19
  9. [Python语音识别项目笔记] 3softmax函数
  10. 第10课:优化神经网络——如何防止过拟合