【唐老狮】排序——选择排序

C#入门习题攻略:从语法基础到面向对象,高效刷题提升编程实战能力 编程学习过程中,实践是巩固理论、将抽象概念转化为实际技能的关键路径。对于C#这类强类型、面向对象的现代编程语言,掌握其核心语法、数据结构与算法基础是构建开发能力的基石。通过系统性的习题训练,开发者能深入理解变量、流程控制、数组集合、方法封装等基础概念,并逐步掌握类与对象、继承多态等面向对象编程原理。这种训练方式的价值在于,它能将离散的知识点串联起来,在解决具体问题的过程中培养调试能力、逻辑思维和代码设计直觉。在C#的应用场景中,无论是未来的Unity游戏开发、ASP.NET Web应用还是桌面程序开发,扎实 阅读详情

【选择排序】


【基本原理】

依次比较

找出极值

最后交换

图片

 

每一轮从头或尾开始遍历,找出一个极值(最大或最小)。一轮完毕之后,将极值放到最前或者最后。


【关键逻辑】

循环n次

有几个数就比较多少轮

 

极值的索引

 

找出极值

记录索引

 

一轮结束

交换位置

放在头部或尾部

 


【标准实现】

 

排序结果

 


【逻辑分析】

为什么有

两层循环嵌套

第一层

决定排序轮数

第二层

用于找出每轮的极值


为什么是 j = i + 1

每一轮之前默认极值都是 i 

第一次比较用 i 的下一个比较

图片

 

从图中黄色的数字可见

每一轮会把极值放到头部

 

而 i 是从0~n的

每一轮都会把极值

放到 i 的位置


如何降序排列

 

升序(从小到大)

降序(从大到小)

具体是哪种排序

关键点就是条件表达式

如果是小于(<)

(从头到尾遍历时)

找出最小的往前放

结果就是升序排列

如果是大于(>)

(从头到尾遍历时)

找出最大的往前放

结果就是降序排列

 


【从哪开始找?找到放在哪?】

上面的选择排序,是从第一个开始,依次往后找极值,找到后放到最前面。选择排序没有固定的写法,你可以从前往后找,也可以从后往前找,找到后你可以放在最前面,也可以放在最后面。只要理解了基础逻辑,只需要简单改改逻辑便可实现。

举例

从前往后找

找到放最后

 


【练习】

目前我已经实现了,从头往后找,把找到的极值放在 最前面 和 最后面 两种选择排序。如果你理解了选择排序,你可以自己实现从尾往前找,把找到的极值放在 最前面 和 最后面。



 

【总结】
 

·基本原理·

依次比较

找出极值

最后交换

·套路写法·

两层循环

一层轮数

一层寻找

初始索引

记录极值

第二层循环外交换

·注意事项·

从头遍历

从尾遍历

放在头部

放在尾部

第二层循环外交换


关注唐老狮获取更多干货内容

 

​

新华硕笔记本ubuntu18.04双系统安装之后,wifi没有显示无法链接wifi 本来我以为跟简单安装一个wifi网卡的驱动就可以解决的问题,没想到花了我一早上的时候解决… 惭愧。 另外,本来是没打算写这篇博客的,但是我在搜索解决这个问题的过程中, 发现多人提出的解决方案跟我的都不一样,甚至我的解决方案都没有搜到相应的答案,还是只能靠自己啊。。 言归正传,还是说说怎么正确的安装wifi驱动吧! 1. wifi没有正确安装、或没有正确配置的表现 我的电脑现象: 有wifi图标, wifi设置上显示unaviable,无法搜索到任何wifi; 还有其他类似的表现,大家可以看看其他朋友的提 阅读详情

相关推荐

避坑指南:ZYNQ MPSOC QSPI固化时MT25QU256闪存的特殊配置

本文针对Xilinx ZYNQ UltraScale+ MPSoC平台,详细解析了使用Vitis工具将BOOT.bin固化至Micron MT25QU256ABA QSPI NOR Flash时的特殊配置与避坑指南。重点阐述了Init文件的真实作用、电压与频率的精确匹配策略,以及针对该闪存型号的初始化序列,帮助工程师解决烧录失败、启动异常等常见问题,确保系统可靠启动。

weixin_29175469的博客 270

选择排序(简单选择排序)

选择排序 #include<iostream> using namespace std; int main() { int n, i, j; cin >> n; int* a = new int[n];//动态分配一维数组 for (i = 0; i < n; i++) { cin >> a[i]; } for (i = 0; i &lt

qq_57229113的博客 334

Godot 2D游戏开发实战:用GDScript复刻10款经典小游戏(附完整源码)

本文是一份Godot 2D游戏开发实战指南,通过使用GDScript语言复刻10款经典小游戏,帮助开发者快速掌握引擎核心功能。内容涵盖从环境配置、GDScript基础到贪吃蛇、Flappy Bird、打砖块、俄罗斯方块等项目的核心逻辑与代码实现,并附有完整源码,旨在通过实践提升独立开发能力。

gold的博客 778

算法

二分查找 必须有前提,数组中的元素要有序 public static int halfSeach_2(int[] arr, int key) { int min, max, mid; min = 0; max = arr.length - 1; mid = (max + min) >> 1; //(max+min)/2; while (arr[mid] != key) { if (key &g

Florizt 178

详解电路设计中的RC电路

​ 一、什么是RC电路 RC电路是指由电阻R和电容C组成的电路,它是脉冲产生和整形电路中常用到 的电路。 常见的RC充、放电电路、RC积分电路合RC微分电路接下来详细讲解。 二、RC充、放电电路 RC充、放电电路如下图所示,下面通过充电和放电两个过程来分析此电路。 ​RC充、放电电路图 (1)RC充电电路 RC充电电路图如下图(a)所示 RC充电电路图及充电曲线图 ​由上图分析: 将上图a中开关S置于“1”处,电源E开始通过电阻R对电容C充电,由于刚开始充电时电容两端没有..

IT xiaobai 4万+

解决2020R2,2022R1等版本的SCDM无法编辑草图尺寸的问题

解决2020R2,2022R1等版本的SCDM无法编辑草图尺寸的问题

y_u_yu_yu_的博客 1万+

冒泡排序从前向后/从后向前实现

一、什么是冒泡排序 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。 二、动图演示 *动图来自菜鸟教程 三、实现方式 比较相邻的元素。如果第一个比第二个大,就...

Jimmy Huang's Blog 5564

MySQL根据idb文件恢复数据

恢复前提 MySQL 5.* 和 8.* 的恢复方式大同小异,最基本的区别是8.* 中,不再有表结构frm文件,所以要恢复 8.* 的数据,就必须要有完整的建表语句。 而恢复 5.* 的数据,就需要idb文件和 frm文件,当然,如果有完整的建表语句的话,不用frm文件也行。 恢复步骤 需要注意的是,以下操作需要选定数据库后执行。 5.* 恢复表结构 确定表列数 首先创建一张 与需要恢复数据的表 的名字相同的新表,如果已知原表的字段数量的话,就按照原表字段数建表,字段名和类型都不用考虑,如果不知道数量的话,

weixin_45121446的博客 5447

2. 图解-选择排序

1. 思想   每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置   2. 图解过程 每一趟选最小的。 例1:   例2: 3.CODE in JAVA public class SelectionSort { public static void selectionSort(int[] a) { int n =...

wengyupeng 蜗牛一步一步向前。。。 236

无刷电机控制避坑指南:六步换向 vs FOC的5个关键差异

本文深入对比了无刷电机控制中六步换向与FOC(磁场定向控制)的五大核心差异。从控制逻辑、性能表现、效率能耗、硬件成本到应用场景,详细解析了FOC如何通过矢量合成实现平滑的正弦波控制与更高效率,而六步换向则以低成本实现简单开关驱动。旨在帮助工程师根据项目需求,在性能、成本与复杂度间做出最佳选择。

weixin_29216957的博客 506

2025年微信小程序获取手机号授权登录注册详细教程(含服务端)。不弹窗原因以及减少组件用量的方法

前端把获取到的code传给后端,后端获取access_token和前端传过来的code,请求服务器接口,即可获取到手机号。

coderYYY的博客 3万+

八种排序方法(一)——选择排序

编译器:Xcode 编程语言:C++ 选择排序的基本思想: 每一趟在n-i+1(i=1,2,3…,n-1)个记录中选取关键字最小的记录与第i个记录交换,并作为有序序列中的第i个记录。 例如: 待排序列: 43,65,4,23,6,98,2,65,7,79 第一趟: 2,65,4,23,6,98,43,65,7,79 第二趟: 2,4,65,23,6,98,43,65,7,79 第三趟

Wang.T的博客 5万+

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

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

【唐老狮】排序——插入排序

【插入排序】 【基本原理】 两个区域 排序区 未排序区 用一个索引值来区分 未排序区元素 与排序区元素比较 插入到合适位置 直到未排序区清空 排序开始前,首先认为第一个元素在排序区中,其它所有元素在未排序区中。 排序开始后,每次将未排序区第一个元素取出用于和排序区中元素比较。如果满足条件(较大或者较小),则排序区中元素往后移动一个位置。 注意 所有数字都在一个数组中 所谓的两个区域是一个分水岭索引 【关键逻辑】 循环n-1次 有n个数就循环n-1次.

MrTang_Unity的博客 687

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

c#四部曲(基础)

核心进阶请养成用三目运算符(三元表达式)的习惯。在开始之前先考考你,判断两个数中的最大值,并返回它。最简单的写法1:2。

ultraman1234566的博客 1716

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【Unityc#专题篇】—基础章题单实践

👨‍💻。

秩沅 1088

Unity学习--2D相关--[Tilemap]瓦片地图关键脚本和碰撞器

本文总结了Unity瓦片地图编辑与等距瓦片应用的关键要点。主要内容包括:1)瓦片地图创建编辑流程;2)Grid组件参数调整对显示效果的影响;3)碰撞器性能优化方法;4)伪Z轴实现技巧与排序问题解决方案(轴心点设置、分层渲染);5)等距瓦片中的角色碰撞与跳跃处理。重点强调:多图层管理、合理设置碰撞类型、灵活运用排序层级和轴心点排序,以及特殊效果需结合常规场景处理。本文源自唐老狮教学视频的学习笔记,供复习参考。

misco43的博客 1866

C#基础学习记录

c#基础学习

nana_7654321的博客 636

Unity学习--2D相关--[Tilemap]瓦片调色板的使用

本文摘要:Unity瓦片地图编辑教程要点:1.六边形和等距瓦片类型的选择与应用场景;2.TilePalette调色板工具使用技巧,包括画笔/拾取/填充等工具组合;3.两种编辑方法对比,推荐使用调色板预先导入瓦片的层级绘制法;4.关键设置:等距瓦片需调整轴渲染顺序为(0,1,-0.26)并修正精灵轴心点;5.通过Z轴分层实现前景/中景/后景效果,支持同格多图叠加。

misco43的博客 1492

最新【Unityc#专题篇】—基础章题单实践_untiyc,深度解析,值得收藏

⭐习题总结专题篇⭐🎶前言🎶(A)枚举🎶(B)一维数组🎶(C)二维数组🎶(D)值,引用类型存储上的区别🎶(E)函数的使用🎶(F)ref和out🎶(G)params🎶(H)重载🎶(I)递归🎶(J)结构体🎶(K)冒泡和选择排序⭐相关文章⭐🅰️题单来自:唐老狮。

2301_82242724的博客 996

Unity学习----【进阶】TextMeshPro学习(一)--基础知识点

本文总结了Unity中TextMeshPro(TMP)的使用要点:1. TMP是传统Text控件的升级替代,需要手动导入资源包;2. 详细介绍UI文本控件的参数设置(字体、颜色、布局、溢出处理等)和脚本控制方法;3. 对比3D文本控件与UI文本控件的区别;4. 字体资源创建流程及参数配置;5. 常用富文本标签的使用方法。TMP提供更清晰的文本渲染和更丰富的功能,是Unity文本显示的首选方案。

misco43的博客 2698

大数据最全【Unityc#专题篇】—基础章题单实践_untiyc#实战,在阿里工作5年了

⭐习题总结专题篇⭐🎶前言🎶(A)枚举🎶(B)一维数组🎶(C)二维数组🎶(D)值,引用类型存储上的区别🎶(E)函数的使用🎶(F)ref和out🎶(G)params🎶(H)重载🎶(I)递归🎶(J)结构体🎶(K)冒泡和选择排序⭐相关文章⭐🅰️题单来自:唐老狮。

2301_82244122的博客 547

C#学习记录——入门到进阶

输入输出 //输出语句:换行输出 Console.WriteLine("hool,word"); Console.WriteLine("hool c#"); //输出语句,无换行输出 Console.Write("hool word"); Console.Write("hool c#"); //

i_like_python3的博客 2946

选择排序(直接排序)

一.算法描述: 1.选择排序(Selection Sort)是一种简单直观的排序算法。 2.选择排序的基本思想: 每一躺从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列最后,直到全部待排序的数据元素排完。 比如:在一个长度为N的无序数组中,第一趟遍历N个数据,找出其中最小的数值与第一个元素交换;第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换……第N

大同小后生伟的博客 7093

选择排序(从小到大)

选择排序 原理:从0索引开始,依次和后面的元素比较,小的往前放,第一次完毕,最小值出现在最前面 先画一张,解释一下原理: 第一次选择排序:拿原数组来比较,从索引为0元素开始,即先比较20跟60,20较小,所以位置不变,再比较20跟80,位置不变,再比较20跟50,位置不变,再比较20跟10,10比20小,所以交换位置;这样,第一次排序就结束了 第二次选择排序:拿第一次排序后的数组比较,从索引为1...

weiii_的博客 3746

排序算法(四)、选择排序 —— 简单选择排序 和 堆排序

1、简单选择排序简单选择排序思想是:从头到尾(从后往前也行)遍历序列,先固定第一个位置的数据,将该位置后面的数据,依次和这个位置的数据进行比较,如果比固定位置的数据大,就交换。这样,进行一趟排序以后,第一个位置就是最小的数了。然后重复进行,第 2 次遍历并且比较后,第二个位置就是第二小的数字了,,依次类推比较简单,直接上代码吧:void selectsort(int a[], int n) { ...

denghe优快云的博客 660

排序(三)——选择排序

排序

荒唐的博客 1208
上一篇: 【唐老狮】七大排序——冒泡排序
下一篇: 【唐老狮】排序——插入排序
一唐老狮一
博客等级 码龄5年 507粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值