原理

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。一种简单直观的排序算法。

例子

将数组[3,6,4,2,5,1]进行从大到小排序

排序步骤:

第一趟找到最小数1,放到最前边(与首位数字交换)

交换前:| 3 | 6 | 4 | 2 | 5 | 1 |

交换后:| 1 | 6 | 4 | 2 | 5 | 3 |

第二趟找到剩余[6,4,2,5,3]数字里的最小数2,与当前数组的首位数字进行交换

交换前:| 1 | 6 | 4 | 2 | 5 | 3 |

交换后:| 1 | 2 | 4 | 6 | 5 | 3 |

第三趟找到剩余[4,6,5,3]数字里的最小数3,与当前数组的首位数字进行交换

交换前:| 1 | 2 | 4 | 6 | 5 | 3 |

交换后:| 1 | 2 | 3 | 6 | 5 | 4 |

第四趟找到剩余[6,5,4]数字里的最小数4,与当前数组的首位数字进行交换

交换前:| 1 | 2 | 3 | 6 | 5 | 4 |

交换后:| 1 | 2 | 3 | 4 | 5 | 6 |

第五趟找到剩余[5,6]数字里的最小数5,本来就在首位,无须交换

交换前:| 1 | 2 | 3 | 4 | 5 | 6 |

交换后:| 1 | 2 | 3 | 4 | 5 | 6 |

至此,排序完毕,输出最终结果1 2 3 4 5 6

动画演示

代码参考

        static void Main(string[] args)
{
int[] intArray = { , , , , , };
Selection_Sort(intArray); foreach (var item in intArray)
{
Console.WriteLine(item);
}
Console.ReadLine();
} static void Selection_Sort(int[] unsorted)
{
int min, temp;
for (int i = ; i < unsorted.Length - ; i++)
{
min = i; // 取得当前数组最小值的位置
for (int j = i + ; j < unsorted.Length; j++)
{
if (unsorted[min] > unsorted[j])
{
min = j;
}
} if (min != i)
{
temp = unsorted[i];
unsorted[i] = unsorted[min];
unsorted[min] = temp;
}
}
}

参考资料

维基百科http://en.wikipedia.org/wiki/Selection_sort

基础算法之选择排序Selection Sort的更多相关文章

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

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

  2. 排序算法 - 选择排序(selection sort)

    选择排序(Selection sort)跟插入排序一样,也是O(n^2)的复杂度,这个排序方式也可以用我们的扑克牌来解释. 概念 桌面上有一堆牌,也是杂乱无章的,现在我们想将牌由小到大排序,如果使用选 ...

  3. 排序算法--选择排序(Selection Sort)_C#程序实现

    排序算法--选择排序(Selection Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来 ...

  4. 选择排序 Selection Sort

    选择排序 Selection Sort 1)在数组中找最小的数与第一个位置上的数交换: 2)找第二小的数与第二个位置上的数交换: 3)以此类推 template<typename T> / ...

  5. 跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort)

    跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort) 选择排序(selection sort) 算法原理:有一筐苹果,先挑出最大的一个放在最后,然后 ...

  6. 简单选择排序 Selection Sort 和树形选择排序 Tree Selection Sort

    选择排序 Selection Sort 选择排序的基本思想是:每一趟在剩余未排序的若干记录中选取关键字最小的(也可以是最大的,本文中均考虑排升序)记录作为有序序列中下一个记录. 如第i趟选择排序就是在 ...

  7. [算法] 选择排序 Selection sort

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

  8. java基础算法之选择排序

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

  9. 排序--选择排序Selection Sort Java实现

    基本原理 选择排序的简单原理:选择排序算法通过从未排序部分重复查找最小元素(考虑升序)并将其放在开头来对数组进行排序. 将数组两个子数组: 已排序子数组 未排序子数组 选择排序中每次循环都会从未排序子 ...

随机推荐

  1. Weblogic日志机制详解

    服务器日志  每个 WebLogic Server 实例将来自子系统和应用程序的所有消息写入位于本地主机上的服务器日志文件.默认情况下,服务器日志文件位于服务器实例根目录下的 logs 目录中:例如, ...

  2. git 常用命令及解析 由浅入深

    笔者用的是windows系统,不过并没有什么影响. Git  分布式版本控制系统. 为了让初学git的人明白git是干什么的,有什么意义 笔者觉得先来介绍git作为版本控制器是怎么运作的会让大家对后边 ...

  3. UITableView heightForHeaderInSection遇到的坑

    出现这种现象只需要把 heightforfoot改为0.01 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSectio ...

  4. &和&&的区别

    &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false. ...

  5. Oracle instr

    instr函数 instr函数在Oracle/PLSQL中是返回要截取的字符串在源字符串中的位置.instr是一个非常好用的字符串处理函数,几乎所有的字符串分隔都用到此函数. 作    用    返回 ...

  6. php读取大文件

    高效率计算文件行数 function count_line($file) { $fp=fopen($file, "r"); $i=0; while(!feof($fp)) { // ...

  7. webapi aspose导出excel表格

    API 通过get请求,注意用到一个[FromUri]特性,使GET接收实体参数 /// <summary> /// 导出 /// </summary> /// <par ...

  8. Android first --- 页面跳转及数据传递

    页面跳转即数据传递 创建第二个界面Acivity *需要在清单文件中添加配置一个Actuvity标签 标签中如果带有这个子节点,则会在Android中添加一个快捷图标 <intent-filte ...

  9. 几个简单的css样式使用说明

    假设我们的单标签是一个 div: 定义如下通用CSS: div{ position:relative; width:200px; height:60px; background:#ddd; } 法一: ...

  10. word 常用宏代码

    2008年05月25日 11:08 Sub autonew1()Dim 存在, a, i, j, strOn Error Resume NextFor j = 1 To ActiveDocument. ...