查询数据的排序的位置_简单选择排序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!
最新文章
- 2019年工程造价表_2019年工程造价咨询统计公报
- Servlet API
- 数据中心产品化的蜕变
- 如何确认虚拟机被哪台主机锁定以及如何解锁
- 谷歌趋势:“比特币”热度远不及2017年高点
- oracledatabase11gr2怎么打开_oracle database 11gR2 + forms and reports 11g安装教程
- linux ubuntn j经验
- python3调用js_关于python3运行JS文件的问题
- esp-idf的内存管理——tlsf之上的封装
- 汽车维修企业管理【5】
- python运行出玫瑰花的代码_一支玫瑰 - python代码库 - 云代码
- 浅谈Java中的单例模式及四种懒汉模式
- 韩立刚老师《计算机网络》笔记2
- python和r哪个好学知乎_r语言和python学哪个?
- LA4487 Exclusive-OR (加权并查集)
- android 微信搜索功能,[多图]等了N年的功能来了 Android微信8.0.3新版体验
- 微信小程序进阶学习笔记Day05
- 【元宇宙系列】游戏与元宇宙(下)——拉动上游产业发展并引领传统产业数字化转型
- CH579实现一个最小外围设备(Peripheral)
- 零基础学习python第一课总结
热门文章
- 访问Webservice错误
- 主成分分析(PCA)matlab代码实现
- Python:高阶错误
- Matlab计算速度优化(矩阵,bsxfun,repmat)
- Python学习笔记:线程和进程(合),分布式进程
- 【C++】简约的for循环
- alexnet 论文翻译
- [云炬创业基础笔记]第二章创业者测试6
- pandas对象保存到mysql出错提示“BLOB/TEXT column used in key specification without a key length”解决办法
- C# Datagridview完整攻略