选择排序知识点

选择排序基本原理

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轮

套路写法

两层循环

外层轮数

内层寻找

初始索引

记录极值

内存循环外交换

相关推荐
CQ_YM1 小时前
数据结构之单向链表
c语言·数据结构·链表
gihigo19982 小时前
matlab 基于瑞利衰落信道的误码率分析
算法
foxsen_xia2 小时前
go(基础06)——结构体取代类
开发语言·算法·golang
foxsen_xia2 小时前
go(基础08)——多态
算法·golang
leoufung2 小时前
用三色 DFS 拿下 Course Schedule(LeetCode 207)
算法·leetcode·深度优先
im_AMBER4 小时前
算法笔记 18 二分查找
数据结构·笔记·学习·算法
C雨后彩虹4 小时前
机器人活动区域
java·数据结构·算法·华为·面试
MarkHD4 小时前
车辆TBOX科普 第53次 三位一体智能车辆监控:电子围栏算法、驾驶行为分析与故障诊断逻辑深度解析
算法
苏小瀚4 小时前
[算法]---路径问题
数据结构·算法·leetcode
月明长歌5 小时前
【码道初阶】一道经典简单题:多数元素(LeetCode 169)|Boyer-Moore 投票算法详解
算法·leetcode·职场和发展