排序
文章平均质量分 92
three trees
三木无林,却以成森
展开
-
模拟c++优先队列实现(模板+仿函数)
优先队列我们知道c++的优先队列是priority_queue。这个容器的底层逻辑是堆。对于基本数据类型,我们有:priority_queue <int, vector <int>, less <int> > max_q;//大根堆priority_queue <int, vector <int>, greater <int> > min_q;//小根堆模板+仿函数实现#include<bits/stdc++.h&g原创 2020-06-07 23:31:41 · 531 阅读 · 0 评论 -
归并排序与逆序对的问题
逆序对在一个序列中,有i<j,且a[i]>a[j],我们称这对数为逆序对。一个序列的逆序对的数量即为序列的逆序数。归并排序归并排序用到了分治的思想。将大问题化成小问题在进行合并。例:如上图,我们在回溯的时候可以合并两个子区间来达到排序的效果。如:[0,1]和[2,2]这两个区间合并,我们这里使用了一个临时数组在存合并之后的序列。合并完在用临时数组给原序列赋值。void Merge_sort(vector<int> &data, int l, int r, i原创 2020-05-14 12:42:52 · 192 阅读 · 0 评论 -
快速排序之双路快速排序
我们知道快排的一般步骤是:1.选取最左边的数为基准数;2.从右边开始选取一个小于基准数的元素;3.从左边开始选取一个大于基准数的元素;4.交换这两个元素;5.重复2、3、4步直至左右两边移到同一位置,交换基准数与当前元素void quick_sort(int *begin, int *end){ int *left = begin, *right = end; if(...原创 2020-05-01 17:46:04 · 384 阅读 · 0 评论