简单选择排序:每一次在待排序列中,选取最小(最大)的数据,放在待排的位置。
图例:
C代码实现:
int GetMinPos(int *arr, int left, int right)//获取最小位置
{
int Min = left;
for (int i = left + 1; i < right; i++)
{
if (arr[Min] > arr[i])
{
Min = i;
}
}
return Min;
}
void SelectSort(int *arr, int left, int right)
{
for (int i = left; i < right; i++)
{
int j = GetMinPos(arr, i, right);//获取最小位置
if (j != i)// 最小的位置当前位置不相等
{
Swap(&arr[i], &arr[j]);//进行交换
}
}
}
简单选择排序是一种很好理解的排序算法。
特性总结:
- 时间复杂度:O(N^2)
- 空间复杂度:O(1)
- 稳定性:稳定