手写排序算法
1、快速排序
① 递归法
void quickSort(vector<int>& nums, int l, int r) {
if (l > r) {
return;
}
// --- core begin ---
int base = nums[l], i = l, j = r;
while (i < j) {
while (nums[j] >= base) {
// 从右边找到第一个比base小的数
j--;
}
while (nums[i] <= base) {
// 从左边找到第一个比base大的数
i++;
}
if (i < j) {
swap(nums[i], nums[j]);
}
}
swap(nums[i], nums[l]);
// --- core end ---
quickSort(nums, l, i - 1);
quickSort(nums, i + 1, r)
}
查看7道真题和解析


