反正我就这一招了
作者:互联网
第四章 算法初步
1、插入排序
和我们之前提到的问题一样,学好循环是如此之重要。
循环什么时候会停止?当出现第一个打破元素的时候。
以升序排列为例,设当前处理的元素为x,如果x前面的元素t大于x,t就要前移,跳出循环的时候,当下的元素为小于等于x,它前面的位置才是x应该呆的地方。
2、分治
忘了递归吧,从今往后只认识分治!
3、归并排序
同向双线算法,自下而上。
4、快速排序
异向双线算法,自上而下,非常非常漂亮的一个算法!
5、番外传
我个人认为,算法的本质都写在离散数学里了,自己以前虽然学过一点,但却感觉虚无缥缈,写了这么多代码之后应该不会再那样了,毕竟这是多么痛的领悟!
根据离散数学的章节:数理逻辑、集合论、代数结构、组合数学、图论、数论。我们解题的时候可以往上面靠,还有集众家之所长的动态规划,都是我们灵感的源泉!
6、总结
我个人认为这是最最重要的一章,他们浑然天成,彼此分离但又相互作用。
排序会破坏数组下标集到数据集的映射关系,所以排序过后,我们需要用hash表存储键值到数据集的映射关系。
分治不仅仅是一种算法,更是一种思维,它深刻地影响到一个人解决问题的能力。
贪心利用了序列良好的性质,但有时候序列并没有这种性质,于是我们需要用排序来降低序列的嫡值。
二分法的本质就是双线算法。
双线算法是一个非常核心的算法,比如暴力搜索。
这些算法他们各有千秋,无法评定他们之间的重要性,犹如道家的五行,但只相生,不相克,万法归一。
第五章 数学问题
1、简单数学
这个名字起的不好,我来起一个吧!就叫找规律数学,不要妄想用暴力解或者其他方法求解,只要确定了这是个找规律的算法题,那么你用其他的做法多半凉凉,因为你没有充分利用数据或问题独有的性质。
如何找规律呢?我目前能想到的只有“分治”和“排列组合”
2、判断素数
定义判别法:
bool isPrime(int n){
if(n<=1) return false;
int sqr=(int)sqrt(1.0*n);
for(int i=2;i<=sqrt;i++)
if(n%i==0) return false;
return true;
}
埃氏筛法:
const int maxn=110;
int prime[maxn];
bool isPrime[maxn]={true};
void findPrimes(){
for(int i=2;i<maxn;i++){
if(isPrime[i]==true)
for(int j=i+i;j<maxn;j+=i) isPrimes[j]=false;
}
}
第六章 STL
1、set
set可以帮助我们自动排序,但有时我们需要hash表来帮助我们索引set中的元素。
struct node{
xxx x
bool operator <(const node &n) const{
xxxxxx;
}
}
2、string
字符串比较规则:从低位到高位开始比较,某位大的赢,如果某个字符串都到头了还是一样,则长的赢。
3、priority_queue
基本数据类型:
priority_queue<int, vector<int>, less<int>> q;
priority_queue<int, vector<int>, greater<int>> q;
结构体:重载比较运算符
4、记忆方法
你能想到的、合理的它都有。
第七章 线性结构
1、栈
说句题外话吧,借助我们对bool变量用法的思路,先假设一个问题可以进行如下操作然后再进行验证好像可以屏蔽细节,待验证~
2、队列
对真正问题产生影响的因素是什么?
3、链表
假的!借助链表考排序~
第八章 搜索专题
还是说句题外话,搜索必须沿着一种路径,路径就是一种关系,所以,确定关系。
第九章 树
1、并查集
并查集就是一个森林,我们在前一张讲过了,搜索必须要有关系,并查集的关系就是(索引下标,索引对象)
2、堆
堆就是一个完全二叉树,假设序列以0开头,关系为:
leftChild=root*2+1;
rightChild=root*2+2;
root=(anyChild-1)/2
3、哈弗曼树
至今没考过,蛮简单的。
4、领悟
树就是图!
第十章 图
1、dijkstra算法
别的问题好像都可以转化为用dijkstra算法解决的问题,我是这么认为的,没试过~
2、最小生成树算法
还没有考过~
3、关键路径
很多人说这次可能考这个,我没做过这种题目,但我认为双边权就可以把这个问题转化为最短路径问题,如果考到了,等炮灰向你们报告最新战况~
4、注意
边单向还是双向?
如何建立关系决定了问题是否可以被顺利解决,比如微博转发那道题!
结语
我感觉我对问题的理解已经比较到位了,但实操不行,但我就这点小伎俩,希望姥姥可以手下留情!
标签:反正,int,问题,算法,bool,双线,一招,排序 来源: https://blog.csdn.net/weixin_43894218/article/details/100583005