快速排序(前后指针法)
时间复杂度:最坏:O(n^2)–>不会出现 最好:O(nlogn) 平均:O(nlogn)
空间复杂度:O(logn) 函数调用栈, 极端情况: O(n)–>不会出现
稳定性:不稳定
数据敏感:敏感
#include<stdio.h>
//升序
void Swap(int* array, int i, int j)
{
int tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
//三数取中
//这么做是为了防止数据如果是有序的,快排就变成了冒泡排,时间复杂度就变成了O(n^2)
int getMid(int* array, int begin, int end)
{
int mid = begin + (end - begin) / 2;
// begin, mid, end选择中间值的位置
if (array[begin]

本文介绍使用前后指针法实现快速排序的方法,详细解析其时间复杂度为最坏O(n^2)、最好O(nlogn)、平均O(nlogn),以及空间复杂度为O(logn),并说明该排序算法的不稳定性及其对数据的敏感性。
最低0.47元/天 解锁文章
4427

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



