1. 选择排序:SelectSort
1.1 选择排序的原理:
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕。
1.2 代码
using SortInterface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SortItem
{
class SelectSort : ISortItem
{
public override string SortTypeName
{
get
{
return "选择排序";
}
}
protected override void Sort(List<int> listNumber)
{
int i, j, min, len = listNumber.Count;
int temp;
for (i = 0; i < len - 1; i++)
{
min = i;
for (j = i + 1; j < len; j++)
{
if (listNumber[min]>listNumber[j])
{
min = j;
}
}
temp = listNumber[min];
listNumber[min] = listNumber[i];
ChangeNumber(min, listNumber[i]);
listNumber[i] = temp;
ChangeNumber(i , temp);
}
}
}
}
1.3 界面效果
1.4 时间复杂度&空间复杂度
1.4.1时间复杂度
时间复杂度:O(n²)
1.4.2 空间复杂度:
空间复杂度:O(1),只需要一个附加程序单元用于交换
1.4.3 算法稳定性:
稳定性:选择排序是不稳定的排序算法,因为无法保证值相等的元素的相对位置不变,例如 [3, 4, 3, 1, 5]这个数组,第一次交换,第一个3和1交换位置,此时原来两个3的相对位置发生了变化。