脚本之家(jb51.cc)算法栏目主要收集统计算法、大数据算法等资料。
性能分析: 时间复杂度:O(n*log(n)) 空间复杂度:O(log(n)) 这里的时间复杂度其实是快速排序最好的时间复杂度,最坏的时间复杂度是O(n^2) 代码里补充的随机化快速排序的期望时间复杂
性能分析: 时间复杂度:O(n*log(n)) 空间复杂度:O(n) 归并排序算法来自于分而治之思想,“归”是“递归”的意思,“并”是"合并“的意思,就是说将复杂的数组排序问题先进性分解,然
性能分析: 时间复杂度:O(n^2) 空间复杂度:O(1) 虽然性能跟冒泡排序一样,但是速度上来讲,选择排序要优于冒泡排序,因为减少了数据交换的次数,先找到了最小值的下标,然后将它往前挪。 #incl
#include<iostream> #include<string> using namespace std; int main() { int a;//输入的数 int y
一、普通二叉树的公共祖先问题 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *l
KMP算法解决的是字符串匹配的问题 文本串:aabaabaaf 模式串:aabaaf 判断文本串中是否存在模式串 需要用到前缀表: 前缀:包含首字母不包含尾字母的所有子串 后缀:包含为字母不包含首字母
我已无法用语言来描述递归有多牛逼。 #include<iostream> #include<vector> #include<algorithm> using na
性能分析: 时间复杂度:O(n^2) 空间复杂度:O(1) 但是综合来讲,要比冒泡排序和选择排序好一些。 #include<iostream> #include<vector>
递归快速排序的步骤: (1)选择基准值 (2)将数组分成两个子数组:小于基准值的元素组成的子数组和大于基准值的元素组成的子数组。 (3)对这两个子数组进行快速排序。 C++代码(可在VS直接运行):
1.反转链表:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 (1)这道题是经典的题目了,用迭代的方式解决也是很容易的,代码量也不大。分享一个我个人做题的方式,我会先在题目开
这个比较简单,想清楚基线条件和递归条件就可以了,直接看代码(VS直接运行): #include<iostream> #include<vector> using namespa
一.sort函数 1.sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以实现对数据的排序,但是sort函数是如何实现的,我们不用考
递归的特点: (1)递归就是在过程或函数里调用自己;(2)在使用递归时,必须有一个明确的递归结束条件,否则会陷入死循环;(3)递归算法通常比较简洁,但运行效率较低;(4)在递归调用的过程中系统为每一层
简单查找的时间复杂度为O(n) 二分查找的时间复杂度为O(logn) 用递归实现二分查找: 基线条件:数组只包含一个元素。如果如果要查找的值与这个元素相同,就找到了;否则说明不在数组中。 递归条件:把
经典推荐算法DeepFM介绍,以及使用deepctr库利用movielen数据集进行测试
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,本文介绍如何安装使用
ng 机器学习单变量线性回归(Linear Regression with One Variable)作业内容,python实现
LFM介绍 LFM(Funk SVD) 是利用 矩阵分解的推荐算法: R = P * Q 其中: P矩阵是User-LF矩阵,即用户和隐含特征矩阵 Q矩阵是LF-Item矩阵,即隐含特征和物品的矩阵
本文介绍如何用python实现ng的机器学习课程中的多变量线性回归
知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用
介绍如何使用fastText训练word2vec并用于深度学习训练
一、什么是赫夫曼树 给定n个权值作为n个叶子节点,构造一课二叉树,若该树的带权路径长度和(wpl)达到最小,称这样的二叉树为最优二叉树,也就是赫夫曼树。 要理解这句话,我们需要了解几个关键词: 路径:
一、什么是哈希表 1.概述 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找
一、什么是图 1.概述 首先,我们已经在之前学习过了树这种数据结构,树能反映一对多的关系,但是却无法反映多对多的关系,因此我们引入了图这种数据结构。 对于图,其节点也可以叫做顶点,每个节点具有零或者多
查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。 定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。 分类
一、什么是赫夫曼编码 哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来
一、什么是队列 队列是一种特殊的线性表。 队列元素的进出遵循“先进先出”原则:即只允许在前端(front)也就是队头进行删除操作,而只能在后端(rear)也就是队尾进行插入操作。 如图所示: 队列的最
一、什么是堆排序 1.堆,堆排序 对于“堆”我们可以理解为具有以下性质的完全二叉树: 每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆 每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆 堆
一、什么是二叉排序树 二叉排序树(Binary Sort Tree)又称二叉查找树、二叉搜索树。 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根
一、概述 先放百科上的说法: 算法的时间复杂度(Time complexity)是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。 时间复杂度常用大O符号表述,不包括