快速排序可能是面试中最常被考察的算法了,求职者一定要非常熟练地掌握掌握这一算法。
下面介绍该算法的两种C++实现方法:
- 方法一:
void quickSort(vector<int> &nums, int b, int e) {
if (b < e) {
int pivot = nums[b]; //选取第一个元素为pivot
int i = b, j = e;
while (i < j) {
while (i < j && nums[j] > pivot) {
j--;
}
if (i < j) {
nums[i++] = nums[j];
}
while (i < j && nums[i] < pivot) {
i++;
}
if (i < j) {
nums[j--] = nums[i];
}
}
nums[i] = pivot;
quickSort(nums, b, i - 1);
quickSort(nums, i + 1, e);
}
}
这种方法将partition子程序与主程序写在一起,看起来更加简洁。
- 方法二
int pa