时间复杂度:O(n^2)
空间复杂度:O(1)
稳定性:不稳定
举例:【4,3,5,1】
第一轮:4,3,5,1 最小1
得 1,3,5,4
第二轮:1,3,5,4 最小3
得 1,3,5,4
第三轮:1,3,5,4 最小4
得 1,3,4,5
/// <summary>
/// 简单选择排序
/// </summary>
/// <param name="nums">待排数据</param>
public void Sort(int[] nums)
{
//最后一轮排序只有1个数字,不需要在进行比较 所以共需进行nums.Length-1次
for (int i = 0; i < nums.Length - 1; i++)
{
int minIndex = i; //该轮起始最小下标
//第n轮 在n-1元素后选择最小的元素 与n-1元素交换
for (int j = i; j < nums.Length; j++)
{
if (nums[j] <nums[minIndex])
{
minIndex = j;
}
}
//将该轮最小的元素和n-1交换
int tmp = nums[i];
nums[i] = nums[minIndex];
nums[minIndex] = tmp;
}
}

本文详细介绍了一种简单但效率较低的排序算法——简单选择排序。文章通过实例演示了每一轮选择排序的过程,解释了如何找到未排序部分的最小值并将其移至正确位置。介绍了该算法的时间复杂度为O(n^2),空间复杂度为O(1),且不稳定。
6959

被折叠的 条评论
为什么被折叠?



