选择排序知识点

选择排序基本原理

8 7 1 5 4 2 6 3 9

新建中间商

依次比较

找出极值(最大或最小)

放入目标位置

比较n轮

代码实现

cs 复制代码
int[] arr = new int[] { 8, 7, 1, 5, 2, 6, 3, 9, };
//第一步,声明一个中间商来记录索引
//每一轮开始,默认第一个都是极值
//int index = 0;
//第二步
//依次比较
//for (int n = 0; n < arr.Length; n++)
//{
//    //第三步
//    //找出极值(最大值)
//    if (arr[index] < arr[n])
//    {
//        index = n;
//    }
//}

//第四步,放入目标位置
//Length - 1 - 轮数
//if (index != arr.Length - 1 - 轮数)
//{
//    int temp = arr[index];
//    arr[index] = arr[arr.Length - 1 - 轮数];
//    arr[arr.Length - 1 - 轮数] = temp;
//}

//第五步,比较m轮
for (int m = 0; m < arr.Length; m++)
{
    //第一步,声明一个中间商来记录索引
    //每一轮开始,默认第一个都是极值
    int index = 0;
    //第二步
    //依次比较
    //-m的目的,是排除上一轮已经放好位置的数
    for (int n = 0; n < arr.Length - m; n++)
    {
        //第三步
        //找出极值(最大值)
        if (arr[index] < arr[n])
        {
            index = n;
        }
    }

    //第四步,放入目标位置
    //Length - 1 - 轮数
    //如果当前极值所在位置就是目标位置,那就没有必要交换了
    if (index != arr.Length - 1 - m)
    {
        int temp = arr[index];
        arr[index] = arr[arr.Length - 1 - m];
        arr[arr.Length - 1 - m] = temp;
    }
}

for (int i = 0; i < arr.Length; i++)
{
    Console.WriteLine(arr[i]);
}

小结:

基本概念

新建中间商

依次比较

找出极值

放入目标位置

比较n轮

套路写法

两层循环

外层轮数

内层寻找

初始索引

记录极值

内存循环外交换

相关推荐
WWZZ20251 小时前
快速上手大模型:深度学习10(卷积神经网络2、模型训练实践、批量归一化)
人工智能·深度学习·神经网络·算法·机器人·大模型·具身智能
sali-tec2 小时前
C# 基于halcon的视觉工作流-章62 点云采样
开发语言·图像处理·人工智能·算法·计算机视觉
fashion 道格2 小时前
用 C 语言玩转归并排序:递归实现的深度解析
数据结构·算法·排序算法
j_xxx404_3 小时前
C++:继承(概念及定义|作用域|基类与派生类转换|默认成员函数|与友元、静态成员关系|多继承|组合)
数据结构·c++
码银3 小时前
【数据结构】 栈和队列
数据结构
九年义务漏网鲨鱼3 小时前
蓝桥杯算法——状态压缩DP
算法·职场和发展·蓝桥杯
CappuccinoRose3 小时前
MATLAB学习文档(二十八)
开发语言·学习·算法·matlab
Freedom_my4 小时前
插入排序算法
数据结构·算法·排序算法
952364 小时前
排序-算法
数据结构·算法·排序算法
WongKyunban4 小时前
插入排序的原理和示例
数据结构·算法·排序算法