数据结构与算法分析 C++
ShenYorke
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二分查找变形问题
4种常见的二分查找变形问题变体一:查找第一个值等于给定值的元素变体二:查找最后一个值等于给定值的元素变体三:查找第一个大于等于给定值的元素变体四:查找最后一个小于等于给定值的元素测试代码 变体一:查找第一个值等于给定值的元素 template<typename T> int BinSearch_1(T a[], int n, T val) // 变体一:查找第一个值等于给定值的元素 { int mid(0), low(0), high(n-1); while (low &原创 2021-08-11 15:18:17 · 346 阅读 · 0 评论 -
快速排序(递归方法)
快速排序(递归方法) 基本思想 先找到一个合适的数,作为支点pivot并放在段末尾,然后两个指针在数据段的首位,开始遍历判断,目的是为了让下标为L的位置,左侧均小于支点值(支点本身不小于支点),右侧则大于支点值(不包括数据段末尾的支点),然后L和支点位置互换。代码如下,注解很详细: // 找到中位数 数组长度要大于3,要求三个数不相同 template<class T> int findMed(T a[], int &i ,int &j) { if((j - i )原创 2021-08-08 20:11:50 · 763 阅读 · 0 评论 -
归并排序
归并排序非递归版本 非递归版本 归并的核心思想可以看这位大佬写的,有动图,方便理解: 图解mergerSort // 非递归版本 template <class T> void merge(T d[], T tmp[], int startOfFirst, int endOfFirst,int endOfSecond) { // 把 c 中相邻的两个数据段归并到d中 int first = startOfFirst; // 第一个数据段的索引 int s原创 2021-08-06 20:37:32 · 176 阅读 · 0 评论
分享