1.快速排序
优化后:时间复杂度O(nlogn) ,空间复杂度O(logn)
//优化后的快排
void Quick_sort(int a[], int l, int r)
{
if (l >= r) return;
把a数组中随机一个元素和a[l]交换 //快排优化
int p = a[l], i = l, j = r; //p作为枢轴参与比较
while (i < j)
{
while (i < j && a[j] >= p) j--;
a[i] = a[j];
while (i < j && a[i] <= p) i++;
a[j] = a[i];
}
a[i] = p;
Quick_sort(a, l, i - 1); //递归处理左区间
Quick_sort(a, i + 1, r); //递归处理右区间
}
//未优化
void Quick_sort(int a[], int l, int r)
{
if (l >= r) return;
int p = a[l], i = l, j = r;
while (i < j)
{
while (i < j && a[j] >= p) j--;
a[i] = a[j];
while (i < j && a[i] <= p) i++;
a[j] = a[i];
}
a[i] = p;
Quick_sort(a, l, i - 1);
Quick_sort(a, i + 1, r);
}