约定:

  1. 假设数据中有n个数据元素(关键字)。排列算法中,将序列中各关键字值依次存放于类型为keytype的数组元素K[1], K[2], K[3], …, K[n]中。
  2. 排序结果按照数据元素(关键字)值的大小,从小到大排序。

核心思想: 第 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;     // 值最小元素与第一个元素交换位置}}
}

排序算法(二)--选择排序法相关推荐

  1. c语言排序算法_C语言写排序算法(二) —— 选择排序

    上次联系的算法是冒泡排序,不知道小伙伴们还记得不,中间穿插了一下比特币相关的分享,嘿嘿.今天来分享一下选择排序. 算法描述:选择排序是从数组中选择最大(小)的元素放到数组的最后一个,然后往前移,接着从 ...

  2. 堆排序算法c语言筛选法,【排序】排序算法之选择排序

    排序算法之选择排序 罗朝辉(http://www.cppblog.com/kesalin) 转载请注明出处 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行 ...

  3. 排序---初级排序算法(选择排序、插入排序和希尔排序)

    写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera  Algorithms Part1&2 本文 ...

  4. 【排序算法】选择排序(C语言)

    [排序算法]-- 选择排序 目录 一.选择排序的原理 二.选择排序的代码实现 三.选择排序的优化 1. 优化思路 2. 排序优化后问题 3. 优化代码的实现 四.选择排序的效率 一.选择排序的原理 ​ ...

  5. 函数模板案例_利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试

    案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 #include <iostream& ...

  6. 排序算法 | 直接选择排序,算法的图解、实现、复杂度和稳定性分析

    排序算法 | 直接选择排序,算法的图解.实现.复杂度和稳定性分析 目录 1.直接选择排序的原理 2.图解直接选择排序 3.算法代码实现 4.算法复杂度分析.稳定性分析 直接选择排序 1.直接选择排序的 ...

  7. 【排序算法】选择排序(Selection sort)

    选择排序(Selection sort)是一种简单直观的排序算法. 选择排序介绍 它的基本思想是: 首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置:接着,再从剩余未排序的元 ...

  8. 排序算法(3)选择排序

    排序算法(3)选择排序 原理:思想:两个变种(1)单侧选择:在一个无序数组中选择出每一轮中最大值(或最小值)元素,放到最前面或最后面(升序)(2)双向选择:在一个无序数组中选择出每一轮中最值元素,然后 ...

  9. Java经典排序算法:选择排序,动图演示排序过程

    Java经典排序算法:选择排序,动图演示排序过程 示意动图: public class Main {public static void main(String[] args) {new Main() ...

最新文章

  1. 圆桌讨论:人工智能的未来
  2. 求解最大字段和的几种方法
  3. php-fpm7.0,php-fpm7.0 慢查询设置及说明
  4. 如何将对象拼接成get传值的形式
  5. zt:缓存一致性(Cache Coherency)入门 cach coherency
  6. 锤子/诺基亚/努比亚手机不合格!上海市场监管局公布抽检不合格手机名单......
  7. mysql replace
  8. python代码翻译器-Python编程学习 -- 用十几行代码实现一个翻译器
  9. redis 正则匹配value_Java-19-Redis
  10. MyBatis入门使用方式
  11. 管理会计习题集及答案 5-7章
  12. uc_pass.php,discuz 论坛UCenter无法登录,闪退的终极8种解决办法
  13. 白纸不够白,签名照片还需要ps去除背景?Python大法半完美解决电子签名背景问题(20行代码去除签名背景)
  14. \t转义字符占几个字节?
  15. 理解物理 CPU 与逻辑 CPU
  16. 黑客技术入门|“知已知彼,百战不殆”——踩点
  17. 2020年个人年终工作总结报告及2021年工作计划怎么利用敬业签历史记录 利用云便签备忘录及待办事项的任务清单有效解决2020年终总结报告的撰写
  18. 红米4a android 9 速度,雷军感叹科技进步速度太快!Redmi 9入门机性能已经相当于骁龙835...
  19. c语言编程齿轮模数选择,如何画齿轮,一看就懂
  20. wo zai gong si de yi tian

热门文章

  1. Linux-windows10下安装Ubuntu
  2. R 回归 虚拟变量na_互助问答第85期:虚拟变量和空间面板回归问题
  3. python中用于输出内容到终端的函数是_python执行linux shell管道输出内容
  4. SiriKit 描述
  5. loj#6436. 「PKUSC2018」神仙的游戏(NTT)
  6. 13.4 mysql用户管理 13.5 常用sql语句 13.6 mysql数据库备份恢复
  7. sort函数用于vector向量的排序
  8. AGC018F. Two Trees
  9. Android中各个权限详解
  10. BZOJ 1072 排列