文章目录
前言
每日打卡
提示:以下是本篇文章正文内容,下面案例可供参考
一、QuickSort
1.不稳定排序
2.空间效率,最好o(log2n),最差o(n)
3.时间效率,最好o(nlog2n),最差o(n2)
4.内部排序中平均性能最优
二、实例
代码如下(示例):
int Partition(int a[], int low, int high) //一趟划分
{
int pivot = a[low];
while (low < high)
{
while (low < high && a[high] >= pivot)
--high;
a[low] = a[high];
while (low < high && a[low] <= pivot)
++low;
a[high] = a[low];
}
a[low] = pivot;
return low; //返回存放轴的位置
}
void QuickSort(int a[], int low, int high)
{
if (low < high) //递归跳出条件
{
int pivotpos = Partition(a, low, high);
QuickSort(a, low, pivotpos - 1); //依次对子表划分
QuickSort(a, pivotpos + 1, high);
}
}
附加冒泡排序
代码如下(示例):
void BubbleSort(int a[], int n)
{
int i, j;
bool flag = false;
for (i = 1; i < n; i++)
{
for (j = n - 1; j > i; --j)
if (a[j] < a[j - 1])
{
Swap(a[j], a[j - 1]); //交换
flag = true;
}
if (flag == false) //没有发生交换,表有序,结束
return;
}
}
总结
快速排序属于交换排序