首页 > 其他分享 >选择排序.原理讲解

选择排序.原理讲解

时间:2024-05-28 12:29:23浏览次数:13  
标签:下标 12345 50 讲解 原理 排序 数据 比较

背景

一天,老师要李小明把10000个同学的成绩从高到底排序。

李小明蒙了:“这么大,我不行呀!”

正文

啊,哈喽,小伙伴们大家好。我是#张亿,今天呐,学的是选择排序.原理讲解

这就像我们排队是从高到矮一样,将同一类型的数据按一定顺序(从大到小或从小到大)排列称为排序。排序的算法有很多,其中选择排序是一种较简单的方法。

例如:输入 5 个正整数,把这 5 个数按由大到小的顺序排列。

分析:要把5个数按从大到小顺序排列,则排完后,第一个数最大,第二个数次大,...... 。因此,我们第一步可将第一个位置的数与其后的各个数依次比较,若发现有数比它大的,则互相交换位置,这样结束后,第一个位置的数就是最大的数。

用1号数据和后面2到5号的数据依次比较,确定 “第一大” 的数据。

第一次是 1 号和 2 号比较,50 > 30,所以数据不变。

第二次是 1 号和 3 号比较,50 > 10,所以交换不变。

第三次是 1 号和 4 号比较,50 > 40,所以数据不变。

第四次是 1 号和 5 号比较,50 > 20, 所以数据不变。

做完上面的事情之后,确定第一大的数据是 50,而且最大的数据已经放在了最前面的位置。

下标12345
数据5010204050

用 2 号数据和后面 3 到 5 号的数据比较,确定 “第二大”的 数据。

确定第二大的数据是 40

下标12345
数据5040102040

......

经过多轮比较,最后确定的顺序是:

下标12345
数据5040302010

这种排序方法叫选择排序:(从大到小)

for (int i=1;i<=n-1;i++)    //确定第i个位置的数据
	for(int j=i+1;j<=n;j++)   //将第i个数与其后所有数比较
		if (a[i]<a[j])          //若a[j]比a[i]大,则交换数据
		{
			t=a[i];
			a[i]=a[j];
			a[j]=t;
		}

 

标签:下标,12345,50,讲解,原理,排序,数据,比较
From: https://blog.csdn.net/dh3_zhang/article/details/139263317

相关文章

  • MySQL按指定顺序排序(order by field的使用)
    新建t表CREATETABLE`t`(`id`intNOTNULLAUTO_INCREMENT,`c`intDEFAULTNULL,`name`varchar(255)COLLATEutf8mb4_general_ciNOTNULLDEFAULT'',PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_general_ci;存......
  • FMC子卡设计原理图:FMC150-两路250Msps AD、两路600Msps DA FMC子卡
    FMC150-两路250MspsAD、两路600MspsDAFMC子卡   一、板卡概述·  ADC采用TI的ADS62P49,2通道250M,14bit,共1片;·  DAC采用ADI的AD9122,2通道,16bit,可达1.2G,共1片;·  时钟采用AD9516,支持板上时钟和外接时钟;·  共6个SSMB接口,1个FMC/LPC接口 ......
  • 排序(冒泡、选择、插入、希尔、归并、快速)
    冒泡排序基本原理冒泡排序(英语:BubbleSort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。voidBubble_Sort(int*num,intnumesize){for(inti=0;i<numesize;++i){......
  • 【微机原理及接口技术】可编程并行接口芯片8255A
    【微机原理及接口技术】可编程并行接口芯片8255A文章目录【微机原理及接口技术】可编程并行接口芯片8255A前言一、8255A的内部结构和引脚1.与外设接口(数据端口)2.与处理器接口二、8255A的工作方式三、8255A的编程1.写入方式控制字:控制字格式2.读写数据端口3.读写端......
  • 如何理解Spring Boot自动配置原理和应用?
    我们知道,基于SpringBoot,我们只需要在类路径中引入一组第三方框架的starter组件,就能在Spring容器中使用这些框架所提供的各项功能。这在当下的开发过程中已经习以为常,但在SpringBoot还没有诞生之前却是不可想象的。如果我们使用传统的Spring框架,那就需要添加各种繁杂的配置信......
  • 文件系统(五):exFAT 文件系统原理详解
    前言exFAT是微软2006年推出的一种文件系统,距今已快二十年,相比于FAT16和FAT32,exFAT还是算年轻。exFAT一直是微软的一个专用文件系统,直到2019年微软发布它的规范,目前微软拥有exFAT多个元素的专利,如果产品上使用exFAT,需要微软授权,否则有可能侵权。exFAT被SD协会采用作为大于32GBSD......
  • 深入探讨Function Calling:实现外部函数调用的工作原理
    引言FunctionCalling是一个允许大型语言模型(如GPT)在生成文本的过程中调用外部函数或服务的功能。FunctionCalling允许我们以JSON格式向LLM模型描述函数,并使用模型的固有推理能力来决定在生成响应之前是否调用该函数。模型本身不执行函数,而是生成包含函数名称和执行函数......
  • Gitee的原理及应用详解(二)
    本系列文章简介:        Gitee是一款开源的代码托管平台,是国内最大的代码托管平台之一。它基于Git版本控制系统,提供了代码托管、项目管理、协作开发、代码审查等功能,方便团队协作和项目管理。Gitee的出现,在国内的开发者社区中起到了积极的推动作用,促进了开源软件的发展......
  • Gitee的原理及应用详解(三)
    本系列文章简介:        Gitee是一款开源的代码托管平台,是国内最大的代码托管平台之一。它基于Git版本控制系统,提供了代码托管、项目管理、协作开发、代码审查等功能,方便团队协作和项目管理。Gitee的出现,在国内的开发者社区中起到了积极的推动作用,促进了开源软件的发展......
  • 【讲解下Web前端三大主流的框架】
    ......