C#:选择排序
介绍
选择排序是一种简单直观的排序算法,它的基本原理如下:
对于给定的一组记录,经过第一轮比较后得到最小记录,然后将该记录与第一个记录的位置进行交换;接着对不包括第一个记录以外的其他记录进行第二轮比较,得到最小记录并与第二个记录进行位置交换;重复该过程,直到进行比较的记录只有一个时为止。
排序过程
以数组{ 5, 4, 9, 8, 7, 6, 0, 1, 3, 2}为例,具体步骤如下:
5 | 4 | 9 | 8 | 7 | 6 | 0 | 1 | 3 | 2 |
---|
第一趟排序后:
0 | 4 | 9 | 8 | 7 | 6 | 5 | 1 | 3 | 2 |
---|---|---|---|---|---|---|---|---|---|
i |
第二趟排序后:
0 | 1 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
---|---|---|---|---|---|---|---|---|---|
i |
第三趟排序后:
0 | 1 | 2 | 8 | 7 | 6 | 5 | 4 | 3 | 9 |
---|---|---|---|---|---|---|---|---|---|
i |
第四趟排序后:
0 | 1 | 2 | 3 | 7 | 6 | 5 | 4 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
i |
第五趟排序后:
0 | 1 | 2 | 3 | 4 | 6 | 5 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
i |
第六趟排序后:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
i |
第七趟排序后:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
i |
第八趟排序后:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
i |
第九趟排序后:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
i |
最后排序结果:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|
程序代码
static void Main(string[] args)
{
int i = 0;
int[] a = { 5, 4, 9, 8, 7, 6, 0, 1, 3, 2 };
selectSort(a);
for (i = 0; i < a.Length; i++)
{
Console.WriteLine(a[i] + "");
}
}
private static void selectSort(int[] a)
{
int length = a.Length;
for (int i = 0; i < length; i++)
{
int temp = a[i]; // 用来赋值当前循环最小的值
int flag = i; // 用来赋值当前循环最小值的下标
for (int j = i + 1; j < length; j++)
{
if (a[j] < temp)
{
temp = a[j];
flag = j;
}
}
// 通过交换,把找到的值放到前面
if (flag != i)
{
a[flag] = a[i];
a[i] = temp;
}
}
}
本文来自博客园,作者:一纸年华,转载请注明原文链接:https://www.cnblogs.com/nullcodeworld/p/16776541.html