
算法工程师笔试知识点
纵雪者
这个作者很懒,什么都没留下…
展开
-
贪心算法介绍与应用
贪心算法有很多经典的应用,比如霍夫曼编码(Huffman Coding)、Prim 和 Kruskal 最小生成树算法、还有 Dijkstra 单源最短路径算法。一、定义贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。...原创 2020-03-28 22:41:28 · 835 阅读 · 1 评论 -
排序算法原理汇总
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序。快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;1、冒泡排序最简单的一种排序算法。假设长...原创 2020-03-28 21:59:16 · 1116 阅读 · 0 评论 -
常见的聚类算法汇总
1. K-Means(K均值)聚类算法步骤:(1) 首先我们选择一些类/组,并随机初始化它们各自的中心点。中心点是与每个数据点向量长度相同的位置。这需要我们提前预知类的数量(即中心点的数量)。(2) 计算每个数据点到中心点的距离,数据点距离哪个中心点最近就划分到哪一类中。(3) 计算每一类中中心点作为新的中心点。(4) 重复以上步骤,直到每一类中心在每次迭代后变化不大为止。也可以多次随机...原创 2020-03-28 20:20:32 · 601 阅读 · 0 评论 -
多线程知识点总结
一、多线程是什么?为什么要用多线程?1.进程 :是一个正在执行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元;2.线程:就是进程中的一个独立控制单元,线程在控制着进程的执行。一个进程中至少有一个进程。3.多线程:一个进程中不只有一个线程。二、 为什么要用多线程:①、为了更好的利用cpu的资源,如果只有一个线程,则第二个任务必须等到第一个任务结束后才能进...原创 2020-03-28 17:11:47 · 135 阅读 · 0 评论 -
大端模式和小端模式
1.大端模式(Big-endian):所谓的大端模式,是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 例子: 0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000 0000440: b484 6c4e 004e ed0...原创 2020-03-28 12:06:42 · 180 阅读 · 0 评论 -
先序遍历、中序遍历、前序遍历概念讲解及例子
按惯例左兄弟优先于右兄弟, 若记做节点 V ,及其左、右孩子 L 和 R ,则下图所示,局部访问的次序可有 V L R 、 L V R 和 L R V 三种选择。根据节点 V 在其中的访问次序,三种策略也相应地分别称作 先序遍历、中序遍历 和 后序遍历 。可以根据节点 V 次序位置进行记忆,先序遍历中 V 位于前端,中序遍历中 V 位于中间,后序遍历中 V 位于后端。例子1先序遍历中序...原创 2020-03-28 10:48:22 · 8193 阅读 · 0 评论 -
析构函数(C++)
析构函数(C++)1.析构函数是对象被销毁时,系统最后调用的一个函数,一般用于扫尾工作。2.析构函数和构造函数一样,没有的话,系统免费送一个。3.析构函数没有返回值,且不带参数,只用在类名的函数名前加一个取反运算符~即可。4.析构函数有2种方式调用,一个是主动调用delete,另一个是根据RAII的规则,在对象的生命周期结束时自动析构。5.析构函数:在类中声明的一种成员函数①析构函数与...原创 2020-03-28 10:39:27 · 1244 阅读 · 0 评论