查询数据的排序的位置_简单选择排序C++实现
简单选择排序是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,第一次从下标为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++实现相关推荐
- python选择排序算法图解_简单选择排序算法(C语言详解版)
该算法的实现思想为:对于具有 n 个记录的无序表遍历 n-1 次,第 i 次从无序表中第 i 个记录开始,找出后序关键字中最小的记录,然后放置在第 i 的位置上. 例如对无序表{56,12,80,91 ...
- java 排序原理_简单选择排序算法原理及java实现(超详细)
简单选择排序的原理 简单选择排序的原理非常简单,即在待排序的数列中寻找最大(或者最小)的一个数,与第 1 个元素进行交换,接着在剩余的待排序的数列中继续找最大(最小)的一个数,与第 2 个元素交换.以 ...
- 选择排序java代码_JAVA简单选择排序算法原理及实现
简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...
- 【简单排序算法】:简单选择排序、直接插入排序和冒泡排序
[简单排序算法]:简单选择排序.直接插入排序和冒泡排序 简单选择排序: 原理:设所排序序列的记录个数为n.i取1,2,-,n-1,每次从所有n-i+1个记录(Ri,Ri+1,-,Rn)中找出最小的记录 ...
- 【排序算法】图解简单选择排序(图解堪比Debug显示每次循环结果)
[排序算法]图解简单选择排序(图解堪比Debug分析每次循环结果) 写在前面: 本文主要介绍简单选择排序算法,通过图片一步步解释每一趟每一次的后移.代码通过C#实现,并输出每一次交换的情况和比较次数, ...
- 【数据结构-排序】3.图解选择排序两种实现(简单选择排序/堆排序)
简单选择排序(选择排序) 排序思想 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾. 以此类推,直到所有元素 ...
- 排序算法入门之简单选择排序
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在学了冒 ...
- C语言实现各个排序算法(直接插入排序,折半插入排序,希尔排序,冒泡排序,简单选择排序)
数据结构开发总结报告 --内部排序综合设计程序的编程实现 #include<stdio.h> #define MaxSize 20 #include<windows.h> ty ...
- 数据结构-排序(六)简单选择排序
本文详细介绍了简单选择排序的算法思想.代码实现和算法效率分析,还包括示例和可视化动图,易理解! Let's go!
最新文章
- 科研文献|粪便污染可以解释人为影响环境中抗生素耐药基因丰度
- 【Unity 3D 游戏开发】Unity3D 入门 - 工作区域介绍 与 入门示例
- [SDOI2015]星际战争
- opengl加载显示3D模型BVH类型文件
- Boost:双图bimap与散列索引的测试程序
- 四十三、ETL工具的流程和应用
- react redux学习之路
- 软件项目验收的准备工作
- vue项目条形码和二维码生成工具试用
- 番茄花园win11专业版32位系统v2021.07
- 显卡,不能显示问题解决
- 找回Win8.1(windows server 2012 R2)的双拼
- 创建Maven web工程不能解析EL表达式的解决办法
- [转载]厚积博发,有的放矢
- 紫薇~还记得大明湖畔的HTML5智力拼图吗?
- Kibana常用搜索语法
- 计算机界面一直闪,电脑光标一直闪烁怎么办?Win7左上角白杠一直闪解决方法...
- 浅谈服务器选择固态硬盘的几个优缺点
- R语言常见的数据类型及转换
- DLL的远程注入技术详解