排序算法(二)--选择排序法
约定:
- 假设数据中有n个数据元素(关键字)。排列算法中,将序列中各关键字值依次存放于类型为keytype的数组元素K[1], K[2], K[3], …, K[n]中。
- 排序结果按照数据元素(关键字)值的大小,从小到大排序。
核心思想: 第 i 趟排序从序列的后 n-i+1 ( i = 1, 2, …, n-1 ) 个元素中选择一个值最小的元素与该 n-i+1 个元素的最前面那个元素交换位置,即与整个序列的第 i 个位置上的元素交换位置。如此下去,直到 i = n-1, 排序结束。
每一趟排序从序列中未排好序的那些元素中选择一个值最小的元素,然后将其与这些未排好序的元素的第 1 个元素交换位置。
void SELECTSORT(keytype K[], int n)
{int i, j, d;keytype temp;for (i=1; i<=n-1; i++) {d = i; // 假设值最小元素为未排序元素的第1个元素for (j=i+1; j<=n; j++)if (K[j]<K[d])d = j; // 寻找真正值最小元素,记录其位置dif (d != i) { // 当值最小元素非第一个元素时temp = K[d];K[d] = K[i];K[i] = temp; // 值最小元素与第一个元素交换位置}}
}
排序算法(二)--选择排序法相关推荐
- c语言排序算法_C语言写排序算法(二) —— 选择排序
上次联系的算法是冒泡排序,不知道小伙伴们还记得不,中间穿插了一下比特币相关的分享,嘿嘿.今天来分享一下选择排序. 算法描述:选择排序是从数组中选择最大(小)的元素放到数组的最后一个,然后往前移,接着从 ...
- 堆排序算法c语言筛选法,【排序】排序算法之选择排序
排序算法之选择排序 罗朝辉(http://www.cppblog.com/kesalin) 转载请注明出处 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行 ...
- 排序---初级排序算法(选择排序、插入排序和希尔排序)
写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera Algorithms Part1&2 本文 ...
- 【排序算法】选择排序(C语言)
[排序算法]-- 选择排序 目录 一.选择排序的原理 二.选择排序的代码实现 三.选择排序的优化 1. 优化思路 2. 排序优化后问题 3. 优化代码的实现 四.选择排序的效率 一.选择排序的原理 ...
- 函数模板案例_利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试
案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 #include <iostream& ...
- 排序算法 | 直接选择排序,算法的图解、实现、复杂度和稳定性分析
排序算法 | 直接选择排序,算法的图解.实现.复杂度和稳定性分析 目录 1.直接选择排序的原理 2.图解直接选择排序 3.算法代码实现 4.算法复杂度分析.稳定性分析 直接选择排序 1.直接选择排序的 ...
- 【排序算法】选择排序(Selection sort)
选择排序(Selection sort)是一种简单直观的排序算法. 选择排序介绍 它的基本思想是: 首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置:接着,再从剩余未排序的元 ...
- 排序算法(3)选择排序
排序算法(3)选择排序 原理:思想:两个变种(1)单侧选择:在一个无序数组中选择出每一轮中最大值(或最小值)元素,放到最前面或最后面(升序)(2)双向选择:在一个无序数组中选择出每一轮中最值元素,然后 ...
- Java经典排序算法:选择排序,动图演示排序过程
Java经典排序算法:选择排序,动图演示排序过程 示意动图: public class Main {public static void main(String[] args) {new Main() ...
最新文章
- 圆桌讨论:人工智能的未来
- 求解最大字段和的几种方法
- php-fpm7.0,php-fpm7.0 慢查询设置及说明
- 如何将对象拼接成get传值的形式
- zt:缓存一致性(Cache Coherency)入门 cach coherency
- 锤子/诺基亚/努比亚手机不合格!上海市场监管局公布抽检不合格手机名单......
- mysql replace
- python代码翻译器-Python编程学习 -- 用十几行代码实现一个翻译器
- redis 正则匹配value_Java-19-Redis
- MyBatis入门使用方式
- 管理会计习题集及答案 5-7章
- uc_pass.php,discuz 论坛UCenter无法登录,闪退的终极8种解决办法
- 白纸不够白,签名照片还需要ps去除背景?Python大法半完美解决电子签名背景问题(20行代码去除签名背景)
- \t转义字符占几个字节?
- 理解物理 CPU 与逻辑 CPU
- 黑客技术入门|“知已知彼,百战不殆”——踩点
- 2020年个人年终工作总结报告及2021年工作计划怎么利用敬业签历史记录 利用云便签备忘录及待办事项的任务清单有效解决2020年终总结报告的撰写
- 红米4a android 9 速度,雷军感叹科技进步速度太快!Redmi 9入门机性能已经相当于骁龙835...
- c语言编程齿轮模数选择,如何画齿轮,一看就懂
- wo zai gong si de yi tian
热门文章
- Linux-windows10下安装Ubuntu
- R 回归 虚拟变量na_互助问答第85期:虚拟变量和空间面板回归问题
- python中用于输出内容到终端的函数是_python执行linux shell管道输出内容
- SiriKit 描述
- loj#6436. 「PKUSC2018」神仙的游戏(NTT)
- 13.4 mysql用户管理 13.5 常用sql语句 13.6 mysql数据库备份恢复
- sort函数用于vector向量的排序
- AGC018F. Two Trees
- Android中各个权限详解
- BZOJ 1072 排列