作者学习算法的教材是LeetCode 101
有需要的同学直接GitHub搜索LeetCode 101即可
**
常用的排序算法
- 快速排序
void quick_sort(vector<int> &nums , int l , int r) {
if (l + 1 >= r) {
return;
}
int first = l , last = r - 1 , key = nums[first];
while (first < last) {
while (first < last && nums[last] >= key) {
--last;
}
nums[first] = nums[last];
while (first < last && nums[first] <= key) {
++first;
}
nums[last] = nums[first];
}
nums[first] = key;
quick_sort(nums , 1 , first);
quick_sort(nums , first + 1 , r);
}
- 归并排序
void merge_sort(vector<int> &nums , int l , int r , vector<int> &temp) {
if (l + 1 >= r) {
return;
}
int m = l + (r - l) / 2;
merge_sort(nums , l , m , temp);
merge_sort(nums , m , r , temp);
int p = l , q = m , i = l;
while (p < m || q < r) {
if (q >= r || (p < m && nums[p] <= nums[q])) {
temp[i++] = nums[p++];
}
else {
temp[i++] = nums[q++