c#选择排序

选择排序思路

  • 将数组分为已排序(前部)和未排序(后部)两部分。初始时已排序部分为空。

  • 在每一轮中,从未排序部分找出最小(或最大)的元素,将其与未排序部分的第一个元素交换。这样,该元素就被放到了已排序部分的末尾。

  • 重复上述过程,直到所有元素都被放入已排序部分。

时空复杂度

  • 时间复杂度:O(n²)(无论数据是否有序,都需要进行 n-1 轮扫描)。

  • 空间复杂度:O(1)(原地排序)。

  • 稳定性:不稳定(例如,交换可能改变相同元素的相对顺序)。

速记套路

思路 新建中间变量,依次比较,找出极值,放入目标位置,比较n轮

套路写法 两层循环 外层轮数 内层寻找 初始索引 记录极值 内层循环外交换

复制代码
 int[] arr = new int[]{ 3,6,2,10,998,23,5};
for (int i = 0; i < arr.Length; i++)
{
    int index = 0;
    for (int j = 1; j < arr.Length-i; j++)
    {
        
        if (arr[index] < arr[j])
        {
             index =j ;                      
        }
    }
    int temp = arr[index];
    arr[index]=arr[arr.Length - 1 - i] ;
    arr[arr.Length - 1 - i]=temp;
}
for (int i = 0; i < arr.Length; i++)
{
    Console.WriteLine(arr[i]);
}
相关推荐
Lost of 程序猿3 小时前
用 YARP 为 .NET 微服务搭一座“立交桥“:路由转发与生产配置实践
c#·asp.net
wuyk5556 小时前
21.计数排序:不用比较的“空间换时间”排序算法
python·算法·排序算法
点纭6 小时前
C 语言 第七章 常用函数(3)
c语言·开发语言·算法·oracle·c#
用户788477316347 小时前
用 .NET MAUI 一套 C# 同时出 Windows 和 Android:哪些是真能共享,哪些是 marketing
c#
Zane19948 小时前
比较排序跑不出O(nlogn)是数学上证明过的,计数、桶、基数排序凭什么能绕开这堵墙
算法·排序算法
Lost of 程序猿9 小时前
用 Quartz.NET 优雅地处理 .NET 定时任务:从选型到 Docker 部署全记录
后端·c#·asp.net
虚无的纽扣9 小时前
【力扣刷题】第三天:有效三角形的个数、快乐数
算法·排序算法
无忧.芙桃10 小时前
数据结构之排序算法(中):冒泡排序与快速排序,从相邻交换到工程级优化
c语言·c++·排序算法
林川~0119 小时前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具
He BianGu1 天前
【WPF-VisionMaster】机器视觉通用平台V5.0版本发行说明
opencv·c#·wpf·halcon·机器视觉·visionmaster