算法导论-快速排序
解题思路
快速排序是排序算法中时间复杂度较好的一种解法,它每一轮从待排序的数组中取一个数,通过比较移动各个数字,小于该数的移到左边,大于的移到右边,然后再递归地在左右两边进行此算法,直到带排序数组长度变为1。算法导论中快速排序的分治解法相当简介,在此我用C++来加以记录。
代码
int Partition(int a[], int f, int l) {
int i = f - 1;
for (int j = f; j < l; j++)
{
if (a[j] <= a[l]) {
i++;
swap(a[i], a[j]);
}
}
i++;
swap(a[i], a[l]);
return i;
}
void QuickSort(int a[], int f, int l) {
if (l > f) {
int p = Partition(a, f, l);
QuickSort(a, f, p - 1);
QuickSort(a, p + 1, l);
}
}

浙公网安备 33010602011771号