选择排序法 ,是在要排序的一组数中,选出最小(或最大)的一个数与第一个位置的数交换;在剩下的数当中找最小的与第二个位置的数交换,即顺序放在已排好序的数列的最后,如此循环,直到全部数据元素排完为止。

原理:1. 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,

2. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

3. .以此类推,直到全部待排序的数据元素排完。

 /// <summary>
/// 选择排序
/// </summary>
/// <param name="arr"></param>
/// <returns></returns>
static int[] SelectSort(int[] arr)
{
for (int i = 0; i < arr.Length ; i++)// 4.继续遍历,将最小数,放入第二个,第三个...第n个位置
{
int minValueIndex = i; //最小值的下标位置,初始设为第一个位置
for (int j = i+1; j < arr.Length; j++)// 2. 比较遍历后,找出这些待排序数据中最小值的下标位置
{
if (arr[j] < arr[minValueIndex])//1. 比较两元素,将较小值的下标位置赋值给 minValueIndex
{
minValueIndex = j;
}
}
//3. 将选出的最小元素,与第一个位置的元素,进行交换(即选出了最小的一个数,放入了第一个位置)
var temp = arr[i];
arr[i] = arr[minValueIndex];
arr[minValueIndex] = temp;
} return arr;
}

排序结果

  static void Main(string[] args)
{
Console.WriteLine($"数据算法");
var arr1= GetArrayData(8, 1, 22);
Console.WriteLine($"生成未排序数据:{ShowArray(arr1)}");
var arr2 = BubbleSort(arr1);
Console.WriteLine($"冒泡排序:{ShowArray(arr2)}");
var arr3= SelectSort(arr1);
Console.WriteLine($"选择排序:{ShowArray(arr3)}");
Console.ReadLine();
}

C# 排序算法2:选择排序的更多相关文章

  1. Python排序算法之选择排序定义与用法示例

    Python排序算法之选择排序定义与用法示例 这篇文章主要介绍了Python排序算法之选择排序定义与用法,简单描述了选择排序的功能.原理,并结合实例形式分析了Python定义与使用选择排序的相关操作技 ...

  2. 八大排序算法~简单选择排序【记录下标k变量的作用】

    八大排序算法~简单选择排序[记录下标k变量的作用] 1,思想:打擂台法,数组中的前n-1个元素依次上擂台"装嫩",后边的元素一个挨着一个不服,一个一个上去换掉它 2,优化:通过记录 ...

  3. 排序算法总结------选择排序 ---javascript描述

    每当面试时避不可少谈论的话题是排序算法,上次面试时被问到写排序算法,然后脑袋一懵不会写,狠狠的被面试官鄙视了一番,问我是不是第一次参加面试,怎么可以连排序算法都不会呢?不过当时确实是第一次去面试,以此 ...

  4. 【DS】排序算法之选择排序(Selection Sort)

    一.算法思想 选择排序是一种简单直观的排序算法.它的工作原理如下: 1)将序列分成两部分,前半部分是已经排序的序列,后半部分是未排序的序列: 2)在未排序序列中找到最小(大)元素,放到已排序序列的末尾 ...

  5. [排序算法] 树形选择排序 (C++)

    树形选择排序解释 树形选择排序 又称为锦标赛排序,其实理解起来很简单. 数组的 n 个元素就好像在进行锦标赛一样,每一轮小比赛每两个一组决出胜负(比较谁更小). 再将每一轮的胜者每两个一组进行小比赛, ...

  6. [排序算法] 简单选择排序 (C++)

    简单选择排序原理 简单选择排序 SelectSort 是一种十分直观地排序方法.其原理是每次从未排序的元素中找到当前最小的元素,放在当前未排序序列的首位.一直重复操作直至最后未排序的元素个数为 0,即 ...

  7. 八大排序算法之三选择排序—简单选择排序(Simple Selection Sort)

    基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素 ...

  8. 常用排序算法之——选择排序(C语言+VC6.0平台)

    选择排序是另一种经典排序算法,核心思想是:在一趟找最小(大)数的过程中,先假设待排数据中的第一个数据即为最小(大)数据,然后循环将其他数据与该数据比较,每次比较时若小于该数据则让新数据成为最小(大)数 ...

  9. Java排序算法之选择排序

    一.算法原理 简单选择排序的基本思想:给定数组:int[] arr={里面n个数据}:第1趟排序,在待排序数据arr[1]~arr[n-1]中选出最小的数据,将它与arrr[0]交换:第2趟,在待排序 ...

  10. 【排序算法】选择排序(Selection sort)

    0. 说明 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最 ...

随机推荐

  1. 踩坑:nacos启动报错提示需要设置JDK环境 ,报错:ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! !!

    换了个Windows11的新电脑,因为个人工作.学习需要,就重新下载了Nacos并解压使用,结果就踩了个坑,使用下面命令启动Nacos服务端时: startup.cmd -m standalone 直 ...

  2. [AGC030D] Inversion Sum

    Problem Statement You are given an integer sequence of length $N$: $A_1,A_2,...,A_N$. Let us perform ...

  3. [HAOI2018] 字串覆盖

    [HAOI2018]字串覆盖 题目描述 小C对字符串颇有研究,他觉得传统的字符串匹配太无聊了,于是他想到了这 样一个问题. 对于两个长度为n的串A, B, 小C每次会给出给出4个参数s, t, l, ...

  4. 通过 VS Code 优雅地编辑 Pod 内的代码(非 NodePort)

    目录 1. 概述 2. NodePort 方式 3. Ingress 方式 4. 救命稻草 5. 其他 1. 概述 今天聊点啥呢,话说,你有没有想过怎样用 VS Code 连上 K8s 集群内的某个 ...

  5. N100低功耗win11安装wsl2当入门nas

    前言 最近入了一台16gb+512gb的N100,想着用来存些资源,当个nas,偶尔要用用windows系统,所以想直接在这上面搞个虚拟机算了,WSL2似乎是一个不错的选择,下面介绍捣鼓的教程. 没用 ...

  6. 记录一下Stream流的一个坑

    List<String> list = new ArrayList<>(); boolean a = list.stream().anyMatch("a": ...

  7. 【OpenCV】在MacOS上源码编译OpenCV

    前言 在做视觉任务时,我们经常会用到开源视觉库OpenCV,OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,它具有C++,Python,Java和MATLA ...

  8. adobe全家桶破解网站

    原文链接:https://baiyunju.cc/8602 总有一些国内.外的大神在破解Adobe全家桶软件,包括Windows.Mac系统最新版的2021.2022版PS.AI.PR.PL.ME.I ...

  9. DNSlog注入(利用DNSlog平台将SQL盲注变成回显注入)

    前言 什么是UNC 什么是DNSlog注入 DNSlog注入的条件 防止DNSlog注入的几个措施 sqli-labs试验 前言 前几天面试的时候,面试官问我知不知道OOB(带外数据). 当时我蒙了, ...

  10. Spring Boot入坑-2-第一个Spring Boot项目

    Spring Boot简介 自从2014年4月Pivotal团队推出以来,作为一个基于Spring的开源轻量级框架,备受企业级应用喜爱 简化Spring应用的搭建与开发过程 是对Spring缺点进行的 ...