交换类排序的基本思想:通过一系列交换逆序元素进行排序的方法。
冒泡排序
冒泡排序的基本思想:顾名思义就是像冒泡一样,两两比较,将大值(小值)后移,最后最大值或最小值排到最后。
优化:数据是有序的,在遍历一次时没有交换数据,所以数据是有限的,可以设置一个标记为flag
//冒泡排序优化,定义一个标志器,
void BubbleSort_P(int arr[], size_t size)
{
bool flag = true;
for (size_t i = 0; i < size; ++i) //控制排序次数
{
for (size_t j = 0; j < size - i - 1; ++j) //两两比较,注意数组越界
{
if (arr[j] > arr[j + 1])
{
std::swap(arr[j], arr[j + 1]);
flag = false;
}
}
if (flag)
break;
}
}
时间复杂度:
最好的情况是,数据有序,遍历一遍 O(N)
最差的情形是,O(N^2)
冒泡排序是稳定的排序。
快速排序
递归

本文介绍了交换类排序的基本思想,并详细探讨了冒泡排序和快速排序。冒泡排序通过两两比较交换元素实现排序,时间复杂度在最好情况下为O(N),最坏为O(N^2)。快速排序则采用分治策略,递归实现,平均时间复杂度为O(n*lgN),但在最坏情况下为O(N^2)。文章讨论了快速排序的优化方法,如随机选择枢轴和三数取中等。
最低0.47元/天 解锁文章
18万+

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



