C#排序算法——选择排序
没有时间磨不掉的记忆,没有死亡治不愈的伤痛。——《堂吉诃德》
“定义:从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。”
选择排序是非常直观且容易理解的一种排序,通过查找最小值(最小值),再转换位置达到排序的目的。
比如这6,2,8,1四个数字要排序,首先选择6这个数字作为第一个比较数,2<6记录下2的下标,8>2不记录,1<2发现1才是最小的值,便让1和6转换下位置,然后以2开始为比较数依次类推。
动图演示:
01
—
Code
下面使用C#代码进行实现:
/// <summary>
/// 选择排序 从小到大
/// </summary>
private void XuanZeSort(List<int> Nums)
{
for (int i = 0; i < Nums.Count; i++)
{
//比较数下标
int MinIndex = i;
//因为要从比较数后面的一位开始比较,所以是i+1
for (int j = i + 1; j < Nums.Count; j++)
{
//如果发现小的就赶紧重新赋值
if (Nums[j] < Nums[MinIndex])
{
MinIndex = j;
}
}
//交换
Swap(Nums, MinIndex, i);
}
}
/// <summary>
/// 交换数据
/// </summary>
private void Swap(List<int> Nums, int index1, int index2)
{
int temp = Nums[index1];
Nums[index1] = Nums[index2];
Nums[index2] = temp;
}
END
感谢阅读
你知道的越多,你不知道的越多
我是EAST
一个靠互联网苟且偷生的程序员
咱们下期见!
扫描二维码关注我吧