C#之选择排序
常见的选择排序细分为简单选择排序、树形选择排序(锦标赛排序)、堆排序。本章所说的选择排序为简单选择排序。
选择排序基本思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
选择排序的特点:
1. 选择排序是不稳定的排序方法。
2.n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。
3.选择排序最好情况是,已经有序,交换0次;最坏情况是,逆序,交换n-1次。
4.选择排序交换次数比冒泡排序少多了,所以选择排序比冒泡排序快。
下面通过一个例子来了解快速排序的具体含义:
{ 40,29,49,37,5,78,23,11,4}
第一趟排序后 4 [29 49 37 5 78 23 11 40]
第二趟排序后 4 5 [49 37 29 78 23 11 40]
第三趟排序后 4 5 11 [37 29 78 23 49 40]
第四趟排序后 4 5 11 23 [29 78 37 49 40]
第五趟排序后 4 5 11 23 29 [78 37 49 40]
第六趟排序后 4 5 11 23 29 37 [78 49 40]
最后排序结果 4 5 11 23 29 37 40 [49 78]
由此思想,我们可以实现选择排序的代码:
class SelectSort
{
private void Func(int[] n)
{
int temp = 0; //临时变量
for (int i = 0; i < n.Length; i++)
{
int minNum = n[i]; //基准数据
int k = i;
for (int j = i+1; j < n.Length; j++)
{
if (minNum > n[j])
{
minNum = n[j];
k = j;
}
}
if (k > i)
{
temp = n[i];
n[i] = minNum;
n[k] = temp;
for (int m = 0; m < n.Length; m++)
{
Console.Write(n[m] + " ");
}
Console.WriteLine();
}
}
Console.ReadLine();
}
static void Main(string[] args)
{
int[] n = { 40,29,49,37,5,78,23,11,4};
SelectSort ss = new SelectSort();
ss.Func(n);
//for (int m = 0; m < n.Length; m++)
//{
// Console.Write(n[m] + " ");
//}
//Console.ReadLine();
}
}

浙公网安备 33010602011771号