简单选择排序是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,第一次从下标为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. 2019年工程造价表_2019年工程造价咨询统计公报
  2. Servlet API
  3. 数据中心产品化的蜕变
  4. 如何确认虚拟机被哪台主机锁定以及如何解锁
  5. 谷歌趋势:“比特币”热度远不及2017年高点
  6. oracledatabase11gr2怎么打开_oracle database 11gR2 + forms and reports 11g安装教程
  7. linux ubuntn j经验
  8. python3调用js_关于python3运行JS文件的问题
  9. esp-idf的内存管理——tlsf之上的封装
  10. 汽车维修企业管理【5】
  11. python运行出玫瑰花的代码_一支玫瑰 - python代码库 - 云代码
  12. 浅谈Java中的单例模式及四种懒汉模式
  13. 韩立刚老师《计算机网络》笔记2
  14. python和r哪个好学知乎_r语言和python学哪个?
  15. LA4487 Exclusive-OR (加权并查集)
  16. android 微信搜索功能,[多图]等了N年的功能来了 Android微信8.0.3新版体验
  17. 微信小程序进阶学习笔记Day05
  18. 【元宇宙系列】游戏与元宇宙(下)——拉动上游产业发展并引领传统产业数字化转型
  19. CH579实现一个最小外围设备(Peripheral)
  20. 零基础学习python第一课总结

热门文章

  1. 访问Webservice错误
  2. 主成分分析(PCA)matlab代码实现
  3. Python:高阶错误
  4. Matlab计算速度优化(矩阵,bsxfun,repmat)
  5. Python学习笔记:线程和进程(合),分布式进程
  6. 【C++】简约的for循环
  7. alexnet 论文翻译
  8. [云炬创业基础笔记]第二章创业者测试6
  9. pandas对象保存到mysql出错提示“BLOB/TEXT column used in key specification without a key length”解决办法
  10. C# Datagridview完整攻略