标签:http oid output highlight src lin com bubuko TBase

| 数据结构 | 数组 |
|---|---|
| 最差时间复杂度 | O(n^2) |
| 最优时间复杂度 | O (n^2) |
| 平均时间复杂度 | O(n^2) |
| 空间复杂度 | O(1) |
| 排序方式 | in-place |
| 稳定性 | 不稳定 |
步骤:
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕。
public class SelectionSort : SortBase
{
public override void Sort()
{
int len = arr.Length;
int iCount = 0;
for (int i = 0; i < len - 1; i++)
{
iCount++;
int jCount = 0;
//获取arr[n](外层第n轮)后的最小值
int min = i;
for (int j = i + 1; j < len; j++)
{
jCount++;
if (arr[j] < arr[min])
{
min = j;
}
}
//arr[n]和最小值交换
if (i != min)
{
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
Console.WriteLine($"i:{iCount} j:{jCount}");
base.output(arr);
}
}
//相反的思路
public override void Sort2()
{
int len = arr2.Length;
int iCount = 0;
for (int i = len - 1; i > 0; i--)
{
iCount++;
int jCount = 0;
int min = i;
for (int j = i - 1; j >= 0; j--)
{
jCount++;
if (arr2[j] > arr2[min])
{
min = j;
}
}
if (i != min)
{
int temp = arr2[min];
arr2[min] = arr2[i];
arr2[i] = temp;
}
Console.WriteLine($"i:{iCount} j:{jCount}");
base.output(arr2);
}
}
}
结果:

标签:http oid output highlight src lin com bubuko TBase
原文地址:https://www.cnblogs.com/luanxm/p/10231117.html