本篇博客介绍的是选择排序中的三种排序;简单选择排序,锦标赛排序和堆排序
选择类排序的基本思想:每一趟在n-i+1个记录中选取关键字最小的记录最为有序序列中第i个记录。
一、简单选择排序
简单选择排序的基本思想:每i趟排序时,从第i个记录开始,通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录进行交换.
代码:
void SelectionSort2(int arr[],size_t size) //升序,找最小值放到前面
{
for (size_t i = 0; i < size - 1; ++i) //少一次趟数
{
int pos = i; //标记最大或最小值
for (size_t j = i + 1; j < size; ++j)
{
if (arr[pos] > arr[j])
{
pos = j;
}
}
if (i != pos)
std::swap(arr[i],arr[pos]);
}
}
算法分析:
时间复杂度:O(n^2)
稳定性:不稳定,给出反例{3,3,2}</

本文详细介绍了选择类排序的三种算法:简单选择排序、锦标赛排序和堆排序。简单选择排序时间复杂度为O(n^2),不稳定性明显;锦标赛排序通过类似比赛的方式选择最小元素,时间复杂度为O(lgN);堆排序则利用完全二叉树性质,时间复杂度为O(nlgN),但不具备稳定性。
最低0.47元/天 解锁文章
1万+

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



