选择排序(Selection Sort)

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/681 访问。

选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。


示例: 

public class Program {public static void Main(string[] args) {int[] array = { 43, 69, 11, 72, 28, 21, 56, 80, 48, 94, 32, 8 };SelectionSort(array);ShowSord(array);Console.ReadKey();}private static void ShowSord(int[] array) {foreach(var num in array) {Console.Write($"{num} ");}Console.WriteLine();}public static void SelectionSort(int[] array) {int swap;int pos = 0;for(int i = 0; i < array.Length - 1; i++) {pos = i;for(int j = i + 1; j < array.Length; j++) {if(array[j] < array[pos]) {pos = j;}}swap = array[pos];array[pos] = array[i];array[i] = swap;}}}

以上是选择排序算法的一种实现,以下是这个案例的输出结果:

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/681 访问。

8 11 21 28 32 43 48 56 69 72 80 94

分析:

选择排序算法的时间复杂度为:  。其分析过程同冒泡排序,可参考我的另一篇博文:

C#算法设计排序篇之01-冒泡排序(附带动画演示程序)

需要注意的是,虽然选择排序算法的时间复杂度和冒泡排序算法的时间复杂度都是  ,但是选择排序算法的实际执行效率要高于冒泡排序,因为完成数字交换的动作是在外循环中,即只在找到最小(或最大)值后交换数字一次,而不像冒泡排序是在双层循环下交换数字。


AlgorithmMan:

AlgorithmMan by Iori,AlgorithmMan是使用C#开发的一套用于算法演示的工具。

下载链接:AlgorithmMan-SelectionSort

C#算法设计排序篇之04-选择排序(附带动画演示程序)相关推荐

  1. 【经典算法学习-排序篇】直接选择排序

    一.选择排序 1.基本概念和介绍 选择排序的核心思想是:每一趟从无序区中选出关键字最小(或最大)的元素,按顺序放在有序区的最后(生成新的有序区,无序区元素个数减1),直到全部排完为止. 换句话说就是: ...

  2. 排序算法理解总结篇——冒泡排序、选择排序、插入排序、希尔排序、归并排序、堆排序、计数排序、基数排序、桶排序

  3. 算法复习——分而治之篇之次序选择问题

    算法复习--分而治之篇之次序选择问题 以下内容主要参考中国大学MOOC<算法设计与分析>,墙裂推荐希望入门算法的童鞋学习! 1. 问题背景 最小值查找: 例如给定数组 A [ 1..16 ...

  4. 【Java】八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序

    这篇文章主要介绍了Java如何实现八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 .快速排序.归并排序.堆排序和LST基数排序,需要的朋友可以参考下 本文实现了八个常用的排序算法:插入排序 ...

  5. 算法设计与分析——十大经典排序算法一(1--5)

    目录 算法设计与分析--十大经典排序算法 第1关:冒泡排序 参考代码 第2关:选择排序 参考代码 第3关:插入排序 参考代码 第4关:希尔排序 参考代码 第5关:归并排序 参考代码 作者有言 一个不知 ...

  6. 算法设计与分析——十大经典排序算法二(6--10)

    一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055@qq.com  Time of completion:2023.3.1 Las ...

  7. 排序算法:冒泡排序、插入排序、选择排序、希尔排序

    相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 一.冒泡排序: 1.算法原理: 冒 ...

  8. java 排序原理_简单选择排序算法原理及java实现(超详细)

    简单选择排序的原理 简单选择排序的原理非常简单,即在待排序的数列中寻找最大(或者最小)的一个数,与第 1 个元素进行交换,接着在剩余的待排序的数列中继续找最大(最小)的一个数,与第 2 个元素交换.以 ...

  9. 数据结构与算法:冒泡排序、插入排序、选择排序

    排序算法太多了,有很多可能你连名字都没听说过,比如猴子排序.睡眠排序.面条排序等.本文只众多排序算法中的一小撮,也是最经典的.最常用的:冒泡排序.插入排序.选择排序.归并排序.快速排序.计数排序.基数 ...

最新文章

  1. 显卡不够时,如何训练大型网络
  2. python装饰器作用-python装饰器有什么用
  3. spark和hadoop升级记录(持续更新中)
  4. 曝光原理_泰国精戈咖啡效果反馈 作用原理曝光
  5. java序列化写法_java-spark的各种常用算子的写法
  6. python创建多个文件_Python创建文件夹与文件的快捷方法
  7. 拼多多回应被列入恶名市场:对此不能认同
  8. 我的内核学习笔记12:linux i2c-gpio驱动应用实例
  9. 树莓派4B Ubuntu20.04 ROS2 DSO realsense d455
  10. ZOJ 1654 二分匹配基础题
  11. matlab绘图和python绘图
  12. 中国大数据风控企业揭秘系列之航天信息
  13. 一、Windows许可证即将过期怎么办
  14. powershell安装sdkman
  15. 如何拍摄VR全景照片
  16. Bitmap 的四种压缩方式详解
  17. mysql解决Access denied for user ''@'localhost' to database 'mysql'没有mysql库
  18. 用八爪鱼获取微博社区管理中心的举报文本
  19. vue 报错 !!vue-style-loader!css-loader?{“sourceMap“:true}!.
  20. 不仅仅是建模 6个步骤解析沙盒游戏场景设计

热门文章

  1. Sublime与远程服务器代码同步工具SFTP
  2. 【课程】MIT最新深度学习课程集
  3. 【数字图像处理】Canny边缘检测详解及编程实现
  4. 9203班级纪律 1202
  5. command对象的三个主要方法 1120
  6. redis-数据操作-键命令
  7. django-普通的cookie操作
  8. python-元组数据类型
  9. 浏览器安全与MSAA
  10. 朝鲜不小心泄漏了它的.kp域名DNS数据