经典算法 (一)---选择排序法

选择排序法C语言详解 选择排序法详解 阅读详情

一:选择排序

1. 选择排序的定义:

选择排序(Selection sort)是一种简单直观的排序算法。

它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。

以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

简单来说:选择排序就是经过一轮一轮的查找,每一轮都从待排序的元素中选择一个最小的(或最大的)元素,存放在起始位置,直接排序完成位置。

2. 选择排序的原理:

从未排序的数组中选择出一个最大的放到数组的第一个位置,重复前面的操作,继续从未排序的数中选择最大的,放到第二个位置,直到排序完成。

算法描述:

  1. 遍历所未排序的数,找出一个一个最小的数,记录它的数组下标。
  2. 拿最小的数和未排序数组的第一个数交换位置。
  3. 重复1-2操作,直到排序完成。

认真观看动态GIF,就容易理解了:

3. 选择排序法实例:

输入一个正整数n(1 < n <= 10),再输入n个整数,用选择法将他们从小到大排序后输出。

排序又称为分类,是程序设计的常用算法,包括冒泡排序、选择排序、和插入排序等。

第 1 步:在未排序的n-1个数( a[0] ~ a[n-1] )中找到最小数,将它与 a[0]交换;

第 2 步:在剩下未排序的 n - 1 个数( a[n - 2] ~ a[n - 1] )中找到最小数,将它与a[1]交换;

... ...

第n - 1步:在剩下未排序的2个数( a[n - 2] ~ a[n - 1] )中找到最小数,将它与a[n - 2]交换;

用流程图描叙的算法:

参考代码:

#include <stdio.h>
#define MAXN 10  
//宏定义数组常量 
int main()
{
	int i, index, k, n, temp;
	int a[MAXN]; //定义符号常量MAXN 
	printf("Enter n:\n");  //提示输入 n 
	scanf("%d", &n);
	printf("Enter %d integers:\n", n);  //提示输入 n 个数 
	for (i = 0; i < n; i++)  //将输入数依次赋值给数组 a 的元素a[0] ~ a[n-1] 
	{
		scanf("%d", &a[i]);
	}

	for (k = 0; k < n - 1; k++)
	{
		index = k;      //index存放最小值所在的下标 
		for (i = k + 1; i < n; i++)    //寻找最小值所在下标 
		{
			if (a[i] < a[index])
			{
				index = i;
			}
		}
		temp = a[index];  //最小元素与下标为 k 的元素交换 
		a[index] = a[k];
		a[k] = temp;
	}
	//输出 n 个数组元素的值 
	printf("After sorted\n");
	for (i = 0; i < n; i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n");

	return 0;
}

DSP28335做FFT傅里叶变换 1. 看了一下例程,居然没有FFT的例程,难道这个DSP28335不能做FFT吗?对了C2000系列是有C2000 ware这个库的。方便很多,不过目前不确定在C5000上运行的FFT能直接迁移到DSP28335上行不?测试了一下,是可以的,因为都是用的math.h,下面的一些正弦函数基本一样的 2. 硬件简介,其中DSP28335和TLV320AIC23B之间使用I2C接口进行寄存器配置,... 阅读详情

相关推荐

sql server安装并SSMS连接

  SQL Server是一种广泛应用于网络业务数据处理的关系型数据库管理系统。SQL Server 2016是微软公司研发的新一代旗舰级数据库和分析平台,突出高级分析和丰富可视化,并融合了关键创新功能。其可提供对企业基础架构最高级别的支持,专门针对关键业务应用的多种功能与解决方案提供最高级别的可用性,并提供更多、更全面的功能以满足不同人群对数据的需求,包括支持来自不同网络环境的数据交互、全面的自助分析等创新功能。百度搜索sql server,在官网下载 地址是:SQL Server 下载| Microso

jiankang66的博客 5184

C语言 选择排序法

从键盘上输入10个数,用选择排序法按照从小到大的顺序输出 首先,分析一下什么叫做选择排序法。假设有十个元素a[0]~a[10],第一次将a[0]和a[1]—a[9]比较,如果其中有比a[0]小的数那么就互换值,此时a[0]一定是最小的数。第二次将a[1]和a[2]—a[9]比较,如果其中有比a[1]小的数那么就互换值,此时a[1]一定是第二小的数。以此类推,到最后那就是a[8]和a[9]比较。算下来一共进行了9次比较, ...

weixin_52278438的博客 1万+

学术报告系列(二) - 智能自主作业机器人感知与控制技术及发展趋势

收集整理于2022年模式识别高峰论坛湖南大学王耀南院士报告(报名题目:智能自主作业机器人感知与控制技术及发展趋势)

Make something people want. 4696

c语言--选择排序法

选择排序法。输人一个正整数n (1<n≤10), 再输人n个整数,用选择法将它们从小到大排序后输出。 排序又称为分类,是程序设计的常用算法,包括冒泡排序、选择排序等。选择排序的算法步骤如下: 第1步:在未排序的n个数(a [0] ~a [n- 1])中找到最小数,将它与a [0]交换; 第2步:在剩下未排序的n- 1个数(a [1] ~a [n- 1])中找到最小数,将它与a[1]交换; 第...

2019菜鸡进化史 1万+

Hopf振荡器在机器人步态控制里到底怎么用?一个CPG仿生案例说清楚

本文深入解析了Hopf振荡器在机器人步态控制中的实际应用,通过CPG仿生案例详细展示了从数学方程到关节指令的完整流程。重点探讨了Hopf振荡器的极限环稳定性、参数调节技巧及自适应控制策略,为机器人运动控制提供了高效解决方案。

weixin_29284657的博客 200

OpenClaw人人养虾:配置通义千问(Qwen)

通义千问(Qwen)是阿里云推出的大语言模型系列。OpenClaw 支持通过 Qwen Portal 插件实现 OAuth 免费额度认证,每日可免费使用 2000 次请求,无需绑定支付方式。

王国平的博客 1254

浅谈排序算法:冒泡排序法和选择排序法的区别

word横线怎么打 https://jingyan.baidu.com/article/00a07f380d690c82d028dcf9.html 在word文档中怎么设置每段的开头空两格? https://zhidao.baidu.com/question/560399680.html 在Word中输入后文字下面会出现蓝色的双下划线怎么取消 https://www.kafan.cn/A/gvxe...

铁柱admin的博客 3万+

巡检领域红外热成像相机镜头焦距选择方法总结

摘要:巡检机器人红外热成像相机镜头焦距的选择需综合考虑检测距离、视场角、目标分辨率等核心要素。短焦距(4-6mm)适用于室内近距离巡检,中焦距(12-19mm)适合变电站等中等距离场景,长焦距(25-50mm)则用于光伏板等远距离检测。选型需遵循焦距计算公式f=SL×d,确保目标占据≥3×3像元,同时考虑机器人安装空间、环境适应性及软件联动需求。建议通过样机实测或仿真软件验证选型合理性,以实现对设备故障的精准识别。

start_up_go的博客 297

C++经典算法题-排序法 - 改良的选择排序

36.排序法 - 改良的选择排序 说明 选择排序法的概念简单,每次从未排序部份选一最小值,插入已排序部份的后端,其时间主要花费于在整个未排序部份寻找最小值,如果能让搜寻最小值的方式加 快,选择排序法的速率也就可以加快,Heap排序法让搜寻的路径由树根至最后一个树叶,而不是整个未排序部份,因而称之为改良的选择排序法。 解法 Heap排序法使用Heap Tree(堆积树),树是一种资料结构,而堆积树是...

逍遥云恋 803

实战:RK3568 Android14 集成 AP6212A WiFi/BT 二合一模块

AP6212A 的集成在 RK3568 上非常成熟。只要电源、32K 时钟、SDIO 线序、UART 流控这四点硬件没问题,软件上主要是 DTS 对应的 GPIO 别填错即可。希望这篇博文能帮你一次点亮 WiFi 和蓝牙!

qq_33427070的博客 1446

22、计算智能在自闭症检测与管理中的应用

本文探讨了计算智能在自闭症谱系障碍(ASD)检测与管理中的应用。在检测方面,结合可穿戴设备、传感技术与多模态数据(如眼动追踪、问卷、神经成像等),利用机器学习和深度学习算法提升诊断准确性,并介绍了多种公开数据集及研究方法。在管理方面,通过生理指标(HRV、GSR、呼吸频率)监测情绪状态,结合智能可穿戴设备与支持性应用平台(如LetMeTalk、MITA、Rethink Ed等),实现对ASD患者的实时干预与个性化支持。文章还展示了多模态筛查与管理流程的系统架构,强调未来技术整合与个性化服务的发展方向。

star的博客 91

C语言经典算法-7

c语言经典算法,改良的选择排序,快速排序

记录学习路上的一些拙见 1281

光学测量仿真软件:Zygo_(5).Zygo的数据处理与分析方法

通过上述综合案例,我们可以看到Zygo中的数据处理与分析方法是如何一步一步应用于实际数据的。从数据导入到预处理,再到滤波、表面分析、缺陷检测和数据可视化,每一步都至关重要,最终确保了数据的准确性和可靠性。处理后的数据还可以导出为多种格式,便于在其他软件中进行进一步的处理或报告。希望这个案例能够帮助您更好地理解和应用Zygo中的数据处理与分析方法。

kkchenjj的博客 946

用选择排序法 从大到小输出10个整数

用选择排序法 从大到小输出10个整数 int main() { int a[10], *p = a; 注意:如果不设置数组值设置指针变量就会出错,如*a,而不指定数组的大小 ,这是因为指针变量arr没有确定的值,谈不上指向那个变量,所以指针变量指向数组元素地址的时候,要定义该数组的大小。 选择排序法 是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一...

qq_43654669的博客 5509

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

选择排序法

选择排序法。输人一个正整数n (1<n≤10), 再输人n个整数,用选择法将它们从小到大排序后输出。 算法步骤如下: 第1步:在未排序的n个数(a [0] ~a [n- 1])中找到最小数,将它与a [0]交换; 第2步:在剩下未排序的n- 1个数(a [1] ~a [n- 1])中找到最小数,将它与a[1]交换; 第n-1步:在剩下未排序的2个数(a [n-2] ~a [n- 1] )中找...

qq_40443457的博客 1174

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【八大数据排序法】选择排序法的图形理解和案例实现 | C++

排序算法是我们在程序设计中经常见到和使用的一种算法,它主要是将一堆不规则的数据按照递增或递减的方式重新进行排序。在如今的互联网信息时代,随着大数据和人工智能的发展,大型企业的数据库中有亿级的用户数据量。因此对其进行处理,排序算法也就成为了其中必不可缺的步骤之一。

PIONEER 950

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

用 选择排序法 对10个整数进行排序

【代码】用 选择排序法 对10个整数进行排序。

wzdxsa的博客 7070

排序——选择排序法

选择排序法 选择排序法也算是枚举法的应用,就是反复从未排序的数列中取出最小的元素,加入到另一个数列中,最后的结果即为已排序的数列。选择排序法可使用两种方式排序,即在所有的数据中,若从大到小排序,则将最大值放入第一个位置;若从小到大排序,则将最大值放入最后一个位置。例如,一开始在所有数据中挑选一个最小项放在第一个位置(假设是从小到大排序),再从第二项开始挑选一个最小项放在第二个位置,以此重复,直到完成排序为止。 演示 原始值:55,23,87,62,16 第一次扫描:先找到该数列中最小值,然后与数列中第一个元

qq_39311458的博客 8172

选择类排序法

选择类排序法 (1)简单选择排序法,最坏情况需要n(n-1)/2次比较; 设所排序序列的记录个数为n。i取1,2,…,n-1,从所有n-i+1个记录(Ri,Ri+1,…,Rn)中找出排序码最小的记录,与第i个记录交换。执行n-1趟 后就完成了记录序列的排序。该排序是不稳定排序。 //简单选择排序法 public class SimpleSelectSort { static int...

weixin_41924879的博客 866

java选择排序法

选择排序法: 1;将数组中的全部元素进行比较,(比较大小方法不用说了吧)把最小值放到为数组中的第一个位置,即a[0] 2:将数组中从第二个元素开始到最后一个元素比较大小,最小值放到数组中的第二个位置; 3:同上,依次类推 public static void main(String[] args) { int[] a= {1,5,4,2,784,9,11,85}; for (int i = ...

weixin_43858089的博客 516

C++ 选择排序法

选择排序法 首先假定数组第一个元素是最小值,找到数据中最小的元素,其次,将它和数组第一个元素交换位置,(完成一次遍历后,可将数组看成已排序和未排序的两个部分),然后在剩下的元素中的找到最小值元素,将它与数组的第二个元素交换位置,如此往复,直至遍历完整个数组,形成有序序列。 // 选择排序法 void SelectSort(int arr[], int length) { if (arr == nullptr || length <=1) { return; } for (int i = 0

u013114420的博客 698

数据结构与算法——选择排序法

本篇介绍了选择排序法,还通过带约束的泛型、实现 Comparable 接口等帮助我们全面的理解该算法,最后通过对数万条数据的测试验证了该算法的时间复杂度...

HuoZhiyan 的博客 661

经典算法——选择排序法

选择排序法将数组元素分为有序区、无序区,其主要思想是:        设想存在一个有序数列里面没有任何元素,还有一个无序数列即是给出的数列,然后在无序数列中每次选择一个最小的元素,放入到有序数列中去。 public class Select { public static void main(String[] args) { // TODO Auto-generated method

3100804034的博客 367

算法之选择排序法

文章目录选择排序法(Selection Sort)一,概念二,图示三,C++实现四,js实现 选择排序法(Selection Sort) 一,概念 自行总结:从越来越小的选择区间中选择一个最小(大)的值,和选择区间最前面的值交换位置,直到排序完成 二,图示 三,C++实现 #include <iostream> using namespace std; void selectio...

superjunjin的专栏 1142
上一篇: C语言-猜数游戏
下一篇: 经典算法(二)---冒泡排序
'撒野奔跑.
博客等级 码龄4年 185粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

'撒野奔跑.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值