自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 串——KMP算法

串——KMP算法如果我们要去找一个单词在一篇文章(相当于一个大字符串)中的定位,这种子串的定位操作通常称做串的模式匹配,是串中最重要的操作之一。1、朴素模式匹配按照通常的思路,要在一个长的字符串中找到指定的子串,比较简单的想法是:从左到右一个个匹配,如果这个过程中有某个字符不匹配,就跳回去,将主串开始比较的位置向右移动一位,直到结束。演示如下:(1)从串的开头初始化比较:(2)比较i...

2018-09-26 15:06:39 2727

转载 图的遍历之深度优先搜索和广度优先搜索

转载出处:http://www.cnblogs.com/skywang12345/ 图的遍历之 深度优先搜索和广度优先搜索 本章会先对图的深度优先搜索和广度优先搜索进行介绍,然后再给出C/C++/Java的实现。目录 1. 深度优先搜索的图文介绍 1.1 深度优先搜索介绍 1.2 深度优先搜索图解 2. 广度优先搜索的图文介绍 2.1 广度优先搜索介绍 ...

2018-09-25 11:49:45 273

原创 最短路径—Dijkstra算法和Floyd算法

Dijkstra算法1、概述Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法。注意该算法要求图中不存在负权边。问题描述:在无向图 G=(V,E) 中,假设每条边 E[i] 的长度为 w[i],找到由顶点 V0 到其余各点的最短路...

2018-09-25 11:27:42 747

原创 图论——最小生成树

1、kruskal算法(1)概览Kruskal算法是一种用来寻找最小生成树的算法,用来解决同样问题的还有Prim算法和Boruvka算法等。三种算法都是贪婪算法的应用。和Boruvka算法不同的地方是,Kruskal算法在图中存在相同权值的边时也有效。(2)基本思路:先对边按权重从小到大排序,先选取权重最小的一条边,如果该边的两个节点均为不同的分量,则加入到最小生成树,否则计算下一条边,直...

2018-09-24 20:46:46 639

原创 排序【5.1】桶排序&&基数排序&&计数排序

1、桶排序(Bucket Sort)(1)基本思想桶排序的基本思想是将一个数据表分割成许多buckets,然后每个bucket各自排序,或用不同的排序算法,或者递归的使用bucket sort算法。也是典型的divide-and-conquer分而治之的策略。它是一个分布式的排序,介于MSD基数排序和LSD基数排序之间。(2)基本流程建立一堆buckets;遍历原始数组,并将数据放入到各...

2018-09-24 17:44:45 286

原创 排序【4.1】归并排序(MergeSort)

归并排序(Merge Sort)1、基本思想:将两个的有序数列合并成一个有序数列,我们称之为"归并"。归并排序(Merge Sort)就是利用归并思想对数列进行排序。根据具体的实现,归并排序包括"从上往下"和"从下往上"2种方式。(1)从下往上的归并排序:将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序数列,再将这些数列两两合并;得到若干个长度为4..

2018-09-24 12:46:52 739

原创 排序【3.1】交换排序(BubbleSort && QuickSort)

1、插入排序——冒泡排序(Bubble Sort)(1)基本思想:它是一种较简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止!(2)排序过程:以数列{20,40,...

2018-09-24 00:43:55 195

原创 排序【2.1】插入排序(InsertSort && ShellSort)

1、插入排序——直接插入排序(Straight Insertion Sort)(1)基本思想:像排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。如图所示,左手上的牌总是排序好的,原来这些牌是在桌子上排堆中顶部的牌。基本思想:把n个待排序的元素看成为一...

2018-09-23 23:30:10 340

原创 排序【1.1】选择排序(SelectSort && HeapSort)

1、选择排序——简单选择排序(Simple Selection Sort)1.1 基本思想:它的基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(or最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。1.2 排序过程:以数列{20,40,30,10,60,50}为例,演示它的选择排序过程:...

2018-09-23 21:43:29 177

原创 概率论基础知识(三) 参数估计

概率论基础知识(三) 参数估计1、矩矩是用来描述随机变量的某些特征的数字,即求平均值,用大写字母E表示。矩是更具有一般意义的数字特征。设有随机变量X,若E(∣X∣k)<+∞E(|X|^k)<+\inftyE(∣X∣k)<+∞(即:存在且有限),则称αk=E(Xk)\alpha_k=E(X^k)αk​=E(Xk),k=1, 2, …是X的k阶原点矩。若E(...

2018-09-23 14:04:33 7053

原创 概率论基础知识(二) 随机变量及其分布

概率论基础知识(二)

2018-09-22 21:18:15 7375 2

原创 Spark:coalesce()方法和repartition()方法

coalesce()方法和repartition()方法1、coalesce()方法def coalesce(numPartitions: Int, shuffle: Boolean = false)(implicit ord: Ordering[T] = null) : RDD[T] = withScope { if (shuffle) { } else { }}...

2018-09-21 23:58:38 3648

原创 Spark DataFrame常用操作

Spark DataFrame常用操作工作中经常用到Spark SQL和Spark DataFrame,但是官方文档DataFrame API只有接口函数,没有实例,新手用起来不太方便。下面这篇博客总结的很好,基本常用的API都有讲解,而且都有示例,平时使用的时候经常查看,很方便。Spark-SQL之DataFrame操作大全下面是其中没有包含的内容,工作中比较常用,总结在这里:1、正则匹...

2018-09-21 23:03:39 10215

原创 集群 & 服务器操作常用命令

集群 & 服务器操作常用命令:1、跨服务器操作:两台机器IP分别为:A.104.238.161.75 \quad B.43.224.34.73在A服务器上操作,将B服务器上/home/lk/目录下所有的文件全部复制到本地的/root目录下,命令为:scp -r [email protected]:/home/lk /root在A服务器上将/root/lk目录下所有的文件传输到...

2018-09-21 21:06:35 1866

原创 概率论基础知识(一)概率论基本概念

概率论基础知识0. 前言本文主要旨在对概率论的基础概念与知识进行概要的总结,以便于使用到时可以参考。 概率论是数理统计的基础,也是很多机器学习模型的支撑,概率论在机器学习中占主要地位,因为概率论为机器学习算法的正确性提供了理论依据。1. 概率论的基本概念1.1 基本概念随机实验(E) (1)可以在相同的条件下重复地进行 (2)每次实验的可能结果不止一...

2018-09-16 18:05:59 36204

原创 回溯算法

回溯算法思想: 回溯算法是深度优先策略的典型应用,回溯算法就是沿着一条路向下走,如果此路不同了,则回溯到上一个分岔路,再选另一条路走,一直这样递归下去,直到遍历所有路径。回溯算法是遍历算法的一种。...

2018-09-13 18:59:51 335

原创 分治算法

1、分治思想分治算法思想为分而治之(divide-and-conquer),各个击破, 就是先把一个问题若干个子问题,然后分别解决各个子问题。分治算法是递归的典型应用。分治算法的子问题具有如下的特点: 1) 子问题比原问题更容易解决 ; 2) 子问题的解可以合并为原问题的解。常见的利用分治算法思想的有快速排序以及归并排序等等。2、算法举例回文 回文就是从头到尾读与从尾到...

2018-09-13 17:43:49 175

原创 动态规划

动态规划(dynamic Programming)动态规划不像贪心算法,从名字上很难理解具体的算法思想,如果换个名字应该就好理解了,动态规划可以叫做有缓存的递归。大家应该知道,递归过程中产生了大量的重复计算,从而导致大量耗时,那如何避免这些不必要的重复计算呢? 那就是缓存缓存\color{#F00}{缓存},当第一次计算这些值的时候,把它们缓存起来,等到再次使用,直接把它们直接拿过来用,这样...

2018-09-13 17:11:06 862

原创 贪婪算法

贪婪算法: 在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择,贪心策略使用的前提是局部最优能导致全局最优。设计过程: 1、建立数学模型来描述问题; 2、把求解的问题分成若干个子问题; 3、对每一子问题求解,得到子问题的局部最优解; 4、把所有子问题的局部...

2018-09-13 12:35:01 1279

原创 穷举法解决0-1背包问题

穷举法是将所有的候选解按某种顺序进行逐一枚举和检验,并从中找出符合要求的候选解作为问题的解,是一种暴力解法,算法思路简单,但复杂度高,一般用于数据量小的情况。下面利用穷举法解决0-1背包问题:[0-1背包问题] 有一个背包,背包容量是M=150kg。有7个物品,物品不可以分割成任意大小。 要求:尽可能让装入背包中的物品总价值最大,但不能超过总容量。 物品 A B ...

2018-09-13 12:12:13 8230 3

原创 排序【0】 排序算法简介

任何依赖成对元素比较的通用排序算法都具备Ω(nlogn)时间复杂度。概述 排序的分类:内部排序和外部排序 内部排序:数据记录在内存中进行排序 外部排序:因排序的数据量大,需要内存和外存结合使用进行排序这里总结的八大排序是属于内部排序: 当n比较大的时候,应采用时间复杂度为nlog2n的排序算法:快速排序、堆排序或归并排序。 其中,快速排序是目前基于比较的内部排序中被认为最好的...

2018-09-11 22:46:08 266

转载 MapReduce工作原理

一、MapReduce完整运行流程解析:1、在客户端启动一个作业。2、向JobTracker请求一个Job ID。3、将运行作业所需要的资源文件复制到HDFS上,包括MapReduce程序打包的jar文件、配置文件和客户端计算所得的计算划分信息。这些文件都存放在JobTracker专门为该作业创建的文件夹中。文件夹名为该作业的Job ID。jar文件默认会有10个副本(ma...

2018-09-05 23:15:48 274

原创 数据库中的索引技术——哈希索引

数据库中的索引技术——哈希索引1、哈希索引哈希索引(hash index)基于哈希表实现,只有精确匹配索引所有列的查询才有效。对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码(hash code),哈希码是一个较小的值,并且不同键值的行计算出来的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。对于hash相同的,采用链表的方式解决...

2018-09-02 10:55:32 41520 5

转载 数据库中的索引技术——B+树

索引对于良好的性能非常关键。尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要。在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显,但当数据量逐渐增大时,性能则会急剧下降1。索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高几个数量级,“最优”的索引有时比一个“好的”索引性能要好两个数量级。1 基本索引索引记录: 由一个搜索码值和指向具有该搜...

2018-09-02 10:19:59 2900

原创 MySQL数据文件的组织

MySQL数据文件的组织1 字段的表示 Name Address Gender Birthday Bob previlige M 19/06/1992 Mary malloand F 20/02/2003每个字段均被SQL定义成具体的数据类型,表示成一定长度的字节序列。 字段名 类型 长度...

2018-09-01 22:23:01 922

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除