C语言 简单选择排序法
简单选择排序是指一种排序算法,在简单选择排序过程中,所需移动记录的次数比较少。最好情况下,即待排序记录初始状态就已经是正序排列了,则不需要移动记录。
一、基本思想
在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
二、排序步骤:
以从小到大进行排序为例:
数组里面有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语言 简单选择排序法相关推荐
- 求水仙花数 以及 最大公约数最小公倍数 以及 冒泡法 以及字母大小写的转换 以及简单选择排序法 以及斐波那契数列
什么是水仙花数呢? 假设一个数ABC是一个三位数. 水仙花数就是 A*A*A +B*B*B +C*C*C = ABC; 水仙花的具体代码. 接着是最大公约数以及最小公倍数 如果两个数是ab,最大公约数 ...
- 数据结构 - 简单选择排序法
数据结构 - 简单选择排序法 在之前的博文里已经介绍过排序的两个基本方法: 双重循环法和冒泡排序法. 基本思想 其实上面两种方法的基本思想都是一样的: 就是将排序步骤分成两层循环, 在内层的每1个循环 ...
- 《大话数据结构》第9章 排序 9.4 简单选择排序
9.4.1 简单选择排序算法 爱炒股票短线的人,总是喜欢不断的买进卖出,想通过价差来实现盈利.但通常这种频繁操作的人,即使失误不多,也会因为操作的手续费和印花税过高而获利很少.还有一种做股票的人,他们 ...
- 简单选择排序_一文带你读懂排序算法(一):冒泡 amp; 快速选择排序 amp; 简单插入排序算法...
点击上方「蓝字」关注我们 排序是确保数据规则有序的有效手段.日常开发里,我们常用到的是"冒泡"."插入排序"."选择排序"三种.大部分情况下 ...
- 【排序综合】直接插入排序,希尔排序,快速排序,堆排序,冒泡排序,简单选择排序的简介,实现和算法复杂度分析
目录 1. 直接插入排序 1.1 直接插入排序简介 1. 什么是直接插入排序 2. 排序思想 1.2 排序实现 1. 排序代码 2. 复杂度分析: 3. 运行结果: 1.3 学习链接 2. 希尔排序( ...
- 七种排序------简单选择排序(Simple Selection Sort)
简单选择排序法就是通过 n - i 次关键字间的比较,从 n - i + 1个记录中选出关键字最小的记录,并和第 i 个记录交换. 代码如下: void SelectSort(SqList *L) { ...
- 经典算法之冒泡排序法与直接选择排序法
活动地址:21天学习挑战赛 文章目录 一.冒泡排序法 1.基本思想 2.算法步骤 3.代码实践 4.复杂度分析 二.直接选择排序法 1.基本思想 2.算法步骤 3.代码实践 4.复杂度分析 一.冒泡排 ...
- C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】
目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...
- C语言选择排序法(通俗易懂类型)
选择排序法 选择排序法也是c语言一种简单的排序方法,接下来我再用我自己的理解来解析一下易懂原理. 为了通俗易懂,继续给一个小的题目来讲解 就是从终端输入5个数,存进数组,然后我们用从小到大的顺序对这个 ...
最新文章
- mysql并发更新数据,多用户并发修改数据解决方案。
- Kubernetes 稳定性保障手册 -- 可观测性专题
- linux程序设计百度网盘,linux系统编程视频 百度网盘下载
- ldap radius mysql_radius vs ldap
- python 函数的调用的时候参数的传递_Python Unittest;如何获取调用函数时传递的参数?...
- gc就是fullgc吗 major_线上出现fullgc问题如何排查?
- 测试题的答案(技术博客)
- 张近东发致家乐福中国员工内部信:唯有坚持、坚守才能取得更大的成功
- python字符串代码对象_Python源码剖析 - Python中的字符串对象
- 软件工程结对作业01
- [转载] python eval序列化函数
- 【转】Android 9 Pie 兼容性常见问题及注意事项
- win10系统无打印机服务器,Print Spooler服务未在Windows 10中运行
- 性能退化评估 matlab,LED驱动电源性能退化参数监测及寿命预测方法研究
- 00003__爬拉勾网
- 再无风清扬,再有少年郎
- 企业微信报错,提示无权限访问
- 作业二 20182325袁源
- #Visio#教会你怎么安装和使用 Visio 哦 ~ ~
- 数论——佩尔方程变量分解