基础算法之选择排序Selection Sort
原理
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。一种简单直观的排序算法。
例子
将数组[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的更多相关文章
- 【排序算法】选择排序(Selection sort)
0. 说明 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最 ...
- 排序算法 - 选择排序(selection sort)
选择排序(Selection sort)跟插入排序一样,也是O(n^2)的复杂度,这个排序方式也可以用我们的扑克牌来解释. 概念 桌面上有一堆牌,也是杂乱无章的,现在我们想将牌由小到大排序,如果使用选 ...
- 排序算法--选择排序(Selection Sort)_C#程序实现
排序算法--选择排序(Selection Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来 ...
- 选择排序 Selection Sort
选择排序 Selection Sort 1)在数组中找最小的数与第一个位置上的数交换: 2)找第二小的数与第二个位置上的数交换: 3)以此类推 template<typename T> / ...
- 跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort)
跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort) 选择排序(selection sort) 算法原理:有一筐苹果,先挑出最大的一个放在最后,然后 ...
- 简单选择排序 Selection Sort 和树形选择排序 Tree Selection Sort
选择排序 Selection Sort 选择排序的基本思想是:每一趟在剩余未排序的若干记录中选取关键字最小的(也可以是最大的,本文中均考虑排升序)记录作为有序序列中下一个记录. 如第i趟选择排序就是在 ...
- [算法] 选择排序 Selection sort
选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然 ...
- java基础算法之选择排序
选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. ...
- 排序--选择排序Selection Sort Java实现
基本原理 选择排序的简单原理:选择排序算法通过从未排序部分重复查找最小元素(考虑升序)并将其放在开头来对数组进行排序. 将数组两个子数组: 已排序子数组 未排序子数组 选择排序中每次循环都会从未排序子 ...
随机推荐
- JBOSS服务器的安装及配置
1 安装jdk(jdk-1_5_0_05-windows-i586-p.exe)2 配置jdk环境 安装完成后还需要配置运行时环境:右键点击"我的电脑"->"属性& ...
- C++ 构造函数、析构函数、拷贝构造、赋值运算符
之所以要把它们放在一起,是因为在使用C/C++类语言的时候,很容易混淆这几个概念(对Java来说完全没有这样的问题,表示Javaor完全没有压力). 先建立一个测试类(包含.h和.cpp) //~ P ...
- loadrunner总体使用篇
为什么要进行性能测试呢? 有些问题是只有在大并发或者压力测试下才会暴露出来的,在平常的公司内部测试中,感觉一切都是正常的,但是把服务放到生产线上,例如某个时刻突然有很多的用户要向我们的服务发送请求, ...
- php就业网版本已改版成功
php就业网简介:www.php91.net,专注于Thinkphp框架教程的php框架学习中心.同时也有小崔老师自学php的教程,与你一起成长哦 同时,php就业网教程部分:http://www.p ...
- 如何用Java代码列出一个目录下所有的文件?
目录文件夹 File file=new File("H:\\"); for(File temp:file.listFiles()){//Java5的新特性之一就是增强的for循环. ...
- vueJs+webpack单页面应用--vue-router配置
vue-route版本要跟vue版本同步,我的vue用的2.0+的,vue-router 也用了最新版2.1+ npm安装vue-router: $ npm install vue-router -- ...
- Metro-Ural119递推
Time limit: 0.5 second Memory limit: 64 MB Many of SKB Kontur programmers like to get to work by Met ...
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest (Online Mirror) in codeforces(codeforces730)
A.Toda 2 思路:可以有二分来得到最后的数值,然后每次排序去掉最大的两个,或者3个(奇数时). /************************************************ ...
- linux内存占用查看命令
ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep tomcat | sort -nrk5 其中rsz为实际内存,上例实现按内存排序 ...
- Windows普通窗口程序
2015-10-09 12:55:38 KWindow.h #pragma once #include <windows.h> class KWindow { virtual void O ...