![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试刷题
把键盘给我敲烂!!
这个作者很懒,什么都没留下…
展开
-
高精度加减乘除
大整数的存储:将数反着存入数组加法运算:模拟人工加法的过程vector<int> add(vector<int> &A ,vector<int> &B){ vector<int> C; int t = 0; for(int i = 0;i < A.size()||i < B.size();i++){ if(i < A.size()) t += A[i]; if(i原创 2022-04-25 21:13:34 · 202 阅读 · 0 评论 -
二分算法的本质及其模板
整数二分的本质:单调性的一定可以二分,但是二分的不一定有单调性,所以二分的本质不是单调性二分的本质是边界,有一个边界,使得在右边区间不满足,左半边满足或相反一共有两个常用的模板1、找第一个小于等于x的数int l = 0 , r=n;while(l<r){ int mid =l+r+1>>1; if(q[mid]<=x) l=mid; //这种情况需要算mid时加上1,否则放l=r-1时,会出现死循环的情况。 else r=mid-1;}2、原创 2022-04-25 16:21:55 · 170 阅读 · 0 评论 -
堆排序详解
堆排序堆排序是一种选择排序,不稳定排序,时间复杂度为:nlogn数据结构,数组,利用数组实现二叉树,大顶堆,小顶堆先根据排序顺序建立大顶堆或者小顶堆然后将未排序的最后一个叶节点与根节点交换位置将剩余的未排序的节点再次形成堆再交换,重复n次,就排好了n个数建堆建堆的时候从倒数第二排开始,依次维护父节点永远大于子节点,得到最开始的堆后序再建立新堆的时候,只需要从根节点遍历到最后一个未排序节点即可,二者是不一样的代码#include <bits/stdc++.h>using n原创 2021-09-25 15:33:47 · 77 阅读 · 0 评论 -
快速排序模板
快速排序:# include <bits/stdc++.h>using namespace std;const int N = 1e6+10;int q[N],n,k;void quick_sort(int q[],int l,int r){ if(l>=r) return; int i=l-1,j=r+1,x=q[l+r>>1];//x作为比较的基准值,但是比较都是基于一半一半的,而不是以x为分界 while(i<j) {原创 2021-09-23 20:39:35 · 87 阅读 · 0 评论