C#算法设计排序篇之04-选择排序(附带动画演示程序)
选择排序(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),直到全部排完为止. 换句话说就是: ...
- 排序算法理解总结篇——冒泡排序、选择排序、插入排序、希尔排序、归并排序、堆排序、计数排序、基数排序、桶排序
- 算法复习——分而治之篇之次序选择问题
算法复习--分而治之篇之次序选择问题 以下内容主要参考中国大学MOOC<算法设计与分析>,墙裂推荐希望入门算法的童鞋学习! 1. 问题背景 最小值查找: 例如给定数组 A [ 1..16 ...
- 【Java】八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序
这篇文章主要介绍了Java如何实现八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 .快速排序.归并排序.堆排序和LST基数排序,需要的朋友可以参考下 本文实现了八个常用的排序算法:插入排序 ...
- 算法设计与分析——十大经典排序算法一(1--5)
目录 算法设计与分析--十大经典排序算法 第1关:冒泡排序 参考代码 第2关:选择排序 参考代码 第3关:插入排序 参考代码 第4关:希尔排序 参考代码 第5关:归并排序 参考代码 作者有言 一个不知 ...
- 算法设计与分析——十大经典排序算法二(6--10)
一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055@qq.com Time of completion:2023.3.1 Las ...
- 排序算法:冒泡排序、插入排序、选择排序、希尔排序
相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 一.冒泡排序: 1.算法原理: 冒 ...
- java 排序原理_简单选择排序算法原理及java实现(超详细)
简单选择排序的原理 简单选择排序的原理非常简单,即在待排序的数列中寻找最大(或者最小)的一个数,与第 1 个元素进行交换,接着在剩余的待排序的数列中继续找最大(最小)的一个数,与第 2 个元素交换.以 ...
- 数据结构与算法:冒泡排序、插入排序、选择排序
排序算法太多了,有很多可能你连名字都没听说过,比如猴子排序.睡眠排序.面条排序等.本文只众多排序算法中的一小撮,也是最经典的.最常用的:冒泡排序.插入排序.选择排序.归并排序.快速排序.计数排序.基数 ...
最新文章
- 显卡不够时,如何训练大型网络
- python装饰器作用-python装饰器有什么用
- spark和hadoop升级记录(持续更新中)
- 曝光原理_泰国精戈咖啡效果反馈 作用原理曝光
- java序列化写法_java-spark的各种常用算子的写法
- python创建多个文件_Python创建文件夹与文件的快捷方法
- 拼多多回应被列入恶名市场:对此不能认同
- 我的内核学习笔记12:linux i2c-gpio驱动应用实例
- 树莓派4B Ubuntu20.04 ROS2 DSO realsense d455
- ZOJ 1654 二分匹配基础题
- matlab绘图和python绘图
- 中国大数据风控企业揭秘系列之航天信息
- 一、Windows许可证即将过期怎么办
- powershell安装sdkman
- 如何拍摄VR全景照片
- Bitmap 的四种压缩方式详解
- mysql解决Access denied for user ''@'localhost' to database 'mysql'没有mysql库
- 用八爪鱼获取微博社区管理中心的举报文本
- vue 报错 !!vue-style-loader!css-loader?{“sourceMap“:true}!.
- 不仅仅是建模 6个步骤解析沙盒游戏场景设计