简单选择排序是指一种排序算法,在简单选择排序过程中,所需移动记录的次数比较少。最好情况下,即待排序记录初始状态就已经是正序排列了,则不需要移动记录。

一、基本思想

在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。

二、排序步骤:

以从小到大进行排序为例:
数组里面有4个元素: len = 4
a[0] = 10
a[1] = 1
a[2] = 20
a[3] = 5

1.第0轮选择最小数放到a[0]:

将a[0]与a[1]比较,a[1]<a[0],交换,此时 a[0] = 1,a[1] = 10,a[2] = 20,a[3] = 5
将a[0]与a[2]比较,a[2]>a[0],不交换
将a[0]与a[3]比较,a[3]>a[0],不交换
最终 a[0] = 1,a[1] = 10,a[2] = 20,a[3] = 5
得到最小数a[0] = 1

2.第1轮选择次最小数放到a[1]

将a[1]与a[2],a[2]>a[1],不交换
将a[1]与a[3]比较,a[3]<a[1],交换,此时 a[1] = 5,a[2] = 20,a[3] = 10
最终a[1] = 5,a[2] = 20,a[3] = 10
得到次最小数a[1] = 5

3.第2轮选择第三小数放到a[2]
将a[2]与a[3]比较,a[3]<a[2],交换,此时 a[2] = 10,a[3] = 20
最终a[2] = 10,a[3] = 20
得到第三最小数a[2] = 10

4.最后一个数自动为最大数
得到最大数a[3] = 20

完成排序 a[0] = 1,a[1] = 5,a[2] = 10,a[3] = 20

三、两个循环i j 确定:

                         //当i=0时,a[0]要与a[1] a[2] a[3] 比较.........
for(i=0;i<len-1;i++){....}
for(j=i+1;j<len;j++){.....}

四、编程实现:

#include <stdio.h>void sort(int arry[],int len)
{ int i,j,tmp;for(i=0;i<len-1;i++){for(j=i+1;j<len;j++){if(arry[i]>arry[j]){tmp = arry[i];arry[i] = arry[j];arry[j] = tmp;              }         }     }
}int main()
{   int m;int arry[4] = {10,1,20,5};int len = sizeof(arry)/sizeof(arry[0]);sort(arry,len);        for(m=0;m<len;m++){printf("%d ",arry[m]);    }    putchar('\n');    return 0;
}

C语言 简单选择排序法相关推荐

  1. 求水仙花数 以及 最大公约数最小公倍数 以及 冒泡法 以及字母大小写的转换 以及简单选择排序法 以及斐波那契数列

    什么是水仙花数呢? 假设一个数ABC是一个三位数. 水仙花数就是 A*A*A +B*B*B +C*C*C = ABC; 水仙花的具体代码. 接着是最大公约数以及最小公倍数 如果两个数是ab,最大公约数 ...

  2. 数据结构 - 简单选择排序法

    数据结构 - 简单选择排序法 在之前的博文里已经介绍过排序的两个基本方法: 双重循环法和冒泡排序法. 基本思想 其实上面两种方法的基本思想都是一样的: 就是将排序步骤分成两层循环, 在内层的每1个循环 ...

  3. 《大话数据结构》第9章 排序 9.4 简单选择排序

    9.4.1 简单选择排序算法 爱炒股票短线的人,总是喜欢不断的买进卖出,想通过价差来实现盈利.但通常这种频繁操作的人,即使失误不多,也会因为操作的手续费和印花税过高而获利很少.还有一种做股票的人,他们 ...

  4. 简单选择排序_一文带你读懂排序算法(一):冒泡 amp; 快速选择排序 amp; 简单插入排序算法...

    点击上方「蓝字」关注我们 排序是确保数据规则有序的有效手段.日常开发里,我们常用到的是"冒泡"."插入排序"."选择排序"三种.大部分情况下 ...

  5. 【排序综合】直接插入排序,希尔排序,快速排序,堆排序,冒泡排序,简单选择排序的简介,实现和算法复杂度分析

    目录 1. 直接插入排序 1.1 直接插入排序简介 1. 什么是直接插入排序 2. 排序思想 1.2 排序实现 1. 排序代码 2. 复杂度分析: 3. 运行结果: 1.3 学习链接 2. 希尔排序( ...

  6. 七种排序------简单选择排序(Simple Selection Sort)

    简单选择排序法就是通过 n - i 次关键字间的比较,从 n - i + 1个记录中选出关键字最小的记录,并和第 i 个记录交换. 代码如下: void SelectSort(SqList *L) { ...

  7. 经典算法之冒泡排序法与直接选择排序法

    活动地址:21天学习挑战赛 文章目录 一.冒泡排序法 1.基本思想 2.算法步骤 3.代码实践 4.复杂度分析 二.直接选择排序法 1.基本思想 2.算法步骤 3.代码实践 4.复杂度分析 一.冒泡排 ...

  8. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

  9. C语言选择排序法(通俗易懂类型)

    选择排序法 选择排序法也是c语言一种简单的排序方法,接下来我再用我自己的理解来解析一下易懂原理. 为了通俗易懂,继续给一个小的题目来讲解 就是从终端输入5个数,存进数组,然后我们用从小到大的顺序对这个 ...

最新文章

  1. mysql并发更新数据,多用户并发修改数据解决方案。
  2. Kubernetes 稳定性保障手册 -- 可观测性专题
  3. linux程序设计百度网盘,linux系统编程视频 百度网盘下载
  4. ldap radius mysql_radius vs ldap
  5. python 函数的调用的时候参数的传递_Python Unittest;如何获取调用函数时传递的参数?...
  6. gc就是fullgc吗 major_线上出现fullgc问题如何排查?
  7. 测试题的答案(技术博客)
  8. 张近东发致家乐福中国员工内部信:唯有坚持、坚守才能取得更大的成功
  9. python字符串代码对象_Python源码剖析 - Python中的字符串对象
  10. 软件工程结对作业01
  11. [转载] python eval序列化函数
  12. 【转】Android 9 Pie 兼容性常见问题及注意事项
  13. win10系统无打印机服务器,Print Spooler服务未在Windows 10中运行
  14. 性能退化评估 matlab,LED驱动电源性能退化参数监测及寿命预测方法研究
  15. 00003__爬拉勾网
  16. 再无风清扬,再有少年郎
  17. 企业微信报错,提示无权限访问
  18. 作业二 20182325袁源
  19. #Visio#教会你怎么安装和使用 Visio 哦 ~ ~
  20. 数论——佩尔方程变量分解

热门文章

  1. flink cdc 初识
  2. java integer 不变模式_多线程编程的设计模式 不变模式(zt)
  3. 大数据架构PK:Hadoop与MPP的区别
  4. 强强联合 AMD惠普腾讯游戏本评测
  5. 3. python基础
  6. Work20230705
  7. mysql drop table 卡死
  8. 敏捷认证中CSM和ACP的区别,你适合学哪个?
  9. 问卷与量表数据分析(SPSS+AMOS)学习笔记(三) : 数据分析工具,三线表的制作
  10. Linux - Date命令查看并设置系统时间