基础知识介绍
链接地址:https://blog.youkuaiyun.com/bloke_come/article/details/126179214?spm=1001.2014.3001.5501
思路
选择排序是给每个位置选择当前元素最小的,比如给第一个位置选择最小的,在剩余元素里面给>二个元素选择第二小的,依次类推,直到第n-1个元素,第n个 元素不用选择了,因为只剩下它一个最大的元素了。
时间复杂度
最佳 | 平均 | 最差 |
---|---|---|
O ( n 2 ) O(n^2) O(n2) | O ( n 2 ) O(n^2) O(n2) | O ( n 2 ) O(n^2) O(n2) |
空间复杂度
O(1)
常规步骤
- 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
- 从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾
- 以此类推,直到所有元素均排序完毕
动态演示
示例代码
// 选择排序
void selectSort(std::vector<int> &num)
{
int len = num.size();
int iMinIndex = 0;
for(int i = 0; i < len - 1; ++i)
{
iMinIndex = i;
for(int j = i + 1; j < len; ++j)
{
if(num[j] < num[iMinIndex])
iMinIndex = j;
}
if(num[i] > num[iMinIndex])
{
std::swap(num[i], num[iMinIndex]);
}
}
}