数据结构与算法 - 选择排序
选择排序
- 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
- 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
- 重复第二步,直到所有元素均排序完毕。
代码实现
vector select_sort(vector &nums)
{
int nSize = nums.size();
for(int i = 0; i < nSize; i++)
{
int minIdx = i;
for(int j = i; j < nSize; j++)
{
if(nums[j] < nums[minIdx])
{
minIdx = j;
}
}
// swap nums[i] and nums[minIdx]
nums[i] = nums[i] & nums[minIdx];
nums[minIdx] = nums[i] & nums[minIdx];
nums[i] = nums[i] & nums[minIdx];
}
return nums;
}
特点
稳定性:排序过程中元素是按顺序进行遍历,相同元素相对位置不会发生变化,故稳定。
空间复杂度:在原序列进行操作,故为 \(O(1)\);
时间复杂度:需要 2 次循环遍历,故为 \(O(n^2)\);