算法
文章平均质量分 68
gb4215287
这个作者很懒,什么都没留下…
展开
-
LeetCode刷题笔记
算法转载 2023-06-21 17:44:50 · 60 阅读 · 0 评论 -
人工智能领域的十大算法
人工智能十大算法转载 2023-04-17 10:46:51 · 1308 阅读 · 0 评论 -
常用的10 种算法
经典算法转载 2023-04-17 10:45:01 · 187 阅读 · 0 评论 -
常见的10种算法(经典)
经典算法转载 2023-04-17 10:43:56 · 17030 阅读 · 1 评论 -
常见的java限流算法有哪些
java限流算法转载 2022-12-23 17:58:36 · 350 阅读 · 0 评论 -
Guava中常用的4种经典限流算法介绍
限流算法转载 2022-12-23 17:52:31 · 1322 阅读 · 0 评论 -
十道题带你手撕二叉树
十道题带你手撕二叉树1. 单值二叉树2. 相同的树3. 对称二叉树4. 二叉树的前序遍历5. 二叉树的中序遍历6. 二叉树的后序遍历7. 另一棵树的子树8. 二叉树的遍历9. 翻转二叉树10. 二叉树的销毁1. 单值二叉树题目:思路一:(遍历的方法)将根节点的值与二叉树中的每一个节点存储的val值进行比较,如果不同就返回false,如果全部相同,就返回true。代码:bool _isUnivalTree(struct TreeNode*root,int num)//辅转载 2022-04-29 19:35:30 · 99 阅读 · 0 评论 -
经典十大排序算法(含升序降序,基数排序含负数排序)【Java版完整代码】【建议收藏系列】
经典十大排序算法【Java版完整代码】写在前面的话十大排序算法对比冒泡排序快速排序直接选择排序堆排序归并排序插入排序希尔排序计数排序桶排序基数排序完整测试类写在前面的话虽然已经有很多人总结过这十大排序算法,优秀的文章也不少,但是Java完整版的好像不多,还存在某些文章代码存在错误的情况,同时也为了自己练手,决定把所有的写一遍巩固下,同时也真诚的希望阅读到这篇文章的小伙伴们可以自己去从头敲一遍,不要粘贴复制!希望我的文章对你有所帮助,每天进步一点点!!!...转载 2021-06-28 13:51:16 · 686 阅读 · 0 评论 -
小白学习机器学习---第六章:SVM算法原理(1)
SVM的英文全称是Support Vector Machines,我们叫它支持向量机。支持向量机是我们用于分类的一种算法。让我们以一个小故事的形式,开启我们的SVM之旅吧。在很久以前的情人节,一位大侠要去救他的爱人,但天空中的魔鬼和他玩了一个游戏。魔鬼在桌子上似乎有规律放了两种颜色的球,说:”你用一根棍分开它们?要求:尽量在放更多球之后,仍然适用。”于是大侠这样放,干的不错?然后魔鬼,又在桌上放了更多的球,似乎有一个球站错了阵营。显然,...转载 2020-10-03 22:50:28 · 1063 阅读 · 1 评论 -
Svm算法原理及实现
Svm(support Vector Mac)又称为支持向量机,是一种二分类的模型。当然如果进行修改之后也是可以用于多类别问题的分类。支持向量机可以分为线性核非线性两大类。其主要思想为找到空间中的一个更够将所有数据样本划开的超平面,并且使得本本集中所有数据到这个超平面的距离最短。一、基于最大间隔分隔数据1.1支持向量与超平面 在了解svm算法之前,我们首先需要了解一下线性分类器这个概念。比如给定一系列的数据样本,每个样本都有对应的一个标签。为了使得描述更加直观,我们采用二维平面进行解释,高..转载 2020-10-03 22:46:13 · 1439 阅读 · 1 评论 -
深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
一、CNN卷积神经网络的经典网络综述下面图片参照博客:http://blog.csdn.net/cyh_24/article/details/51440344二、LeNet-5网络输入尺寸:32*32 卷积层:2个 降采样层(池化层):2个 全连接层:2个 输出层:1个。10个类别(数字0-9的概率)LeNet-5网络是针对灰度图进行训练的,输入图像大小为32*32*1,不包含输入层的情况下共有7层,每层都包含可训练参数(连接权重)。注:每个层有多个Feature.转载 2020-08-12 11:13:54 · 996 阅读 · 0 评论 -
为什么说神经网络可以逼近任意函数?
本文主要介绍神经网络万能逼近理论,并且通过PyTorch展示了两个案例来说明神经网络的函数逼近功能。大多数人理解“函数”为高等代数中形如“f(x)=2x”的表达式,但是实际上,函数只是输入到输出的映射关系,其形式是多样的。拿个人衣服尺寸预测来说,我们用机器学习来实现这个功能,就是将个人身高、体重、年龄作为输入,将衣服尺寸作为输出,实现输入-输出映射。具体来说,需要以下几个步骤:收集关键数据(大量人口的身高/体重/年龄,已经对应的实际服装尺寸)。 训练模型来实现输入-输出的映射逼近。转载 2020-08-11 18:08:54 · 1383 阅读 · 0 评论 -
python算法与数据结构-二叉树的遍历
广度优先遍历代码如下所示:# coding=utf-8class Node(object): #尽量不加3个引号的注释了容易报错 def __init__(self, item): self.elem = item self.lchild = None self.rchild = Noneclass Tree(object): def __init__(self): self.root...原创 2020-07-22 16:58:13 · 181 阅读 · 0 评论 -
python算法与数据结构-数据结构中二叉树的介绍
也就是上面说的2的4次方-1=15(深度为4)原创 2020-07-22 16:53:30 · 131 阅读 · 1 评论 -
python算法与数据结构-数据结构中常用树的介绍
二叉排序树,看上面的右边的图,根节点8左边的节点数值一定比8小,右边的节点数值一定比8大,再看子节点3,左边的节点数值一定比3小,右边的节点数值一定比3大,6也是类似。参考:网上...原创 2020-07-22 16:47:09 · 103 阅读 · 0 评论 -
python算法与数据结构-二叉树的代码实现(46)
阅读目录一、二叉树回忆 二、二叉树比链表好在哪里? 三、二叉树的节点定义(C语言版) 四、定义一个二叉树(C语言版) 五、初始化树(C语言版) 六、创建节点(C语言版) 七、插入节点(C语言版) 八、树的遍历(C语言版) 九、树的删除(C语言版) 十、树的查找(C语言版) 十一、树的前序遍历(C语言版) 十二、树的中序遍历(C语言版) 十三、树的后序遍历(C语言版) 十四、树的广度遍历(C语言版) 十五、树的python代码实现一、二叉树回忆 上一篇我们对数据结构转载 2020-07-22 16:38:37 · 146 阅读 · 0 评论 -
python算法与数据结构-数据结构中常用树的介绍(45)
阅读目录一、树的定义 二、二叉树介绍 三、完全二叉树介绍 四、满二叉树介绍 五、平衡二叉树(AVL树)介绍 六、红黑树介绍 七、霍夫曼树 八、B树介绍 九、B+树介绍 十、B*树介绍 十一、Trie树一、树的定义树是一种非线性的数据结构,是由n(n >=0)个结点组成的有限集合。如果n==0,树为空树。如果n>0,树有一个特定的结点,根结点根结点只有直接后继,没有直接前驱。除根结点以外的其他结点划分为m(m>=0)个互不相交的有限集合,T0,..转载 2020-07-22 16:30:44 · 181 阅读 · 0 评论 -
python算法与数据结构-二分查找算法
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此折半查找方法适用于不经常变动而查找频繁的有序列表。递归实现二分查找,代码如下所示:# coding=utf-8#二分查找,递归算法def binary_search(alist,item): n = len(alist) if n>0: mid = n//2 if(alist[mid] == item): ..原创 2020-07-21 15:03:36 · 147 阅读 · 0 评论 -
python算法与数据结构-归并排序算法
代码如下所示:# -*-coding=utf-8-*-def merge_sort(alist): """归并排序""" n = len(alist) if n<=1: return alist mid = n//2 #print('mid结果是',mid) #mid结果是 4 mid结果是 2 mid结果是 1 mid结果是 1 mid结果是 2 mid结果是 1等等 # pr...原创 2020-07-20 16:44:42 · 117 阅读 · 0 评论 -
python算法与数据结构-快速排序算法
设定一个中间值,如下所示:low从开始位置找low是找比54小的,26比54小合格 high是从末尾位置找比54大的,如下所示:low和high重合后第一轮循环结束第一轮递归后的结果如下所示:还需要处理值相等的情况,如下所示:比如有一个值是54(也可能是多个),正好跟中间值也就是基准值相等,解决思路就是54在一边出现(或者说在一边处理),不是左边出现就是右边出现,把等于这个情况放到一边去处理,不是在low这边就是在high这边。...原创 2020-07-15 15:39:31 · 159 阅读 · 0 评论 -
python算法与数据结构-快速排序算法(36)
阅读目录 一、快速排序的介绍 二、快速排序的原理 三、快速排序的步骤 四、快速排序的图解 五、快速排序的python代码实现 六、快速排序的C言语代码实现 七、快速排序的时间复杂度 八、快速排序的稳定性一、快速排序的介绍 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排..转载 2020-07-15 15:20:36 · 122 阅读 · 0 评论 -
python算法与数据结构-希尔排序算法
希尔排序(shell sort)是插入排序的一种,也称缩小增量排序。希尔排序内层循环逻辑如下所示:上面的可以分为4组,一个一个的按照插入算法来做,第一组有54 77 20三个元素,第二组是26 31两个元素,第三组是93和44两个元素,第四组是17和55两个元素。上面的可以分为4组,一个一个的按照插入算法来做,第一组有54 77 20三个元素,第二组是26 31两个元素,第三组是93和44两个元素,第四组是17和55两个元素。上面的按照插入算法交换后较小的数在前面,较大的数在原创 2020-07-12 18:40:02 · 169 阅读 · 0 评论 -
python算法与数据结构-希尔排序算法(35)
阅读目录一、希尔排序的介绍 二、希尔排序的原理 三、希尔排序的图解 四、希尔排序的python代码实现 五、希尔排序的C语言实现 六、希尔排序的时间复杂度 七、希尔排序的稳定性一、希尔排序的介绍 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的记录越来越多,当增量减至1时,整个文件恰被分成一组转载 2020-07-12 18:26:08 · 288 阅读 · 0 评论 -
python算法与数据结构-循环链表
求链表长度需要考虑的特殊情况,空链表或者链表当中只有一个节点的时候。添加元素:除了头部指向新节点,单向循环链表也需要尾节点指向新的节点删除元素如下所示:代码如下所示:# -*-coding=utf-8-*-class Node(object): """单链表的节点""" def __init__(self, elem): # item存放数据元素 self.elem = elem ...原创 2020-07-09 14:29:13 · 159 阅读 · 0 评论 -
python算法与数据结构-循环链表(41)
阅读目录一、循环链表的介绍 二、循环链表基本操作的python代码实现 三、循环链表基本操作的C语言实现一、循环链表的介绍 上一篇我们已经讲过单链表,本篇给大家讲解循单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点,其基本操作和单链表思路一样。常用的操作有创建节点 创建循环链表 判断是否为空 头部插入 循环链表的遍历 尾部插入 获取链表长度 根据下标插入一个节点 根据下标删除一个节点 查找是否包含一个节点,并转载 2020-07-09 14:12:36 · 133 阅读 · 0 评论 -
python算法与数据结构-双向链表
尾部添加元素如下所示:指定位置插入元素如下所示:上面的对的可以比照下面的图片看,node2节点相当于上图中的cur节点,如下所示:删除元素如下所示:结合下图查看,如下所示:具体代码如下所示:# -*-coding=utf-8-*-class Node(object): """结点""" def __init__(self,item): self.elem = item self...原创 2020-07-08 17:34:42 · 130 阅读 · 0 评论 -
python算法与数据结构-双向链表
阅读目录一、双向链表的介绍 二、双向链表插入和删除的图解 三、双向链表的python代码实现 四、双向链表的C语言代码实现一、双向链表的介绍 一种更复杂的链表是“双向链表”或“双面链表”。每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。 上图是双向链表的结构图,即通过上一个节点可以找到下一个,通过下一个也可以找到上一个节点。二、双向链表插入和删除的图解 1、插入图解转载 2020-07-08 17:25:46 · 163 阅读 · 0 评论 -
python算法与数据结构-单链表
单向链表定义如下所示:在头部插入元素如下所示:头部插入元素最终达到的效果,先改变指向100的节点,再改变指向头部的节点(这个有先后顺序),这样以前100之后的节点顺序什么的就不用改变了在指定位置插入元素,如下所示:单链表查找元素如下所示:单链表删除元素如下所示:头节点是删除的节点的时候,如下所示:还有一种情况是只有一个节点的时候,如下所示:代码如下所示:# -*-coding=utf-8..原创 2020-07-06 15:38:09 · 153 阅读 · 0 评论 -
python算法与数据结构-单链表
阅读目录一、链表 二、单链表介绍 三、单链表结构 四、单链表的常用操作图解 五、单链表的python代码实现 六、单链表的C语言代码实现一、链表 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以转载 2020-07-06 15:16:38 · 301 阅读 · 0 评论 -
python算法与数据结构-插入排序算法
插入排序分析开始的默认的第一个元素93为有序系列,其余的元素为无序系列,如下所示:54和93比,54比93小,所以把54放在前面,如下所示:代码如下所示:# coding:utf-8def insert_sort(alist): """插入排序""" n = len(alist) #从右边的无序序列中取出多少个元素执行这样的过程 for j in range(1,n): # j = [1,2,3,n-1] #..原创 2020-07-05 17:32:22 · 268 阅读 · 0 评论 -
python算法与数据结构-插入排序算法(34)
阅读目录一、插入排序的介绍 二、插入排序的原理 三、插入排序的图解 四、插入排序的python代码实现 五、插入排序的C语言代码实现 六、插入排序的时间复杂度 七、插入排序的稳定性一、插入排序的介绍 插入排序的工作方式非常像人们排序一手扑克牌一样。开始时,我们的左手为空并且桌子上的牌面朝下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较,如下图所示: 那插曲排序是如何借助上面提到的思想来实转载 2020-07-05 17:27:37 · 242 阅读 · 0 评论 -
python算法与数据结构-选择排序算法
代码如下所示:# 定义选择排序函数def select_sort(list): # 计算需要排序的列表元素个数 n = len(list) # 需要n-1次选择操作 for j in range(n - 1): #需要多少次操作,比实际的n的个数少一次,因为最后一个数就不用当做记录最小值了 # 记录最小值的下标 min_index = j # 未排序区域从j+1到末尾n处,属于未排序区,在未排序区在选出最...原创 2020-07-02 15:07:17 · 159 阅读 · 0 评论 -
python算法与数据结构-选择排序算法(33)
阅读目录一、选择排序的介绍 二、选择排序的原理 三、选择排序的图解 四、选择排序总结 五、选择排序的python代码实现 六、选择排序的C语言代码实现 七、选择排序的时间复杂度 八、选择排序的稳定性一、选择排序的介绍 选择排序(Selection sort)是一种简单直观的排序算法。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 选择排序的主要.转载 2020-07-02 14:55:02 · 146 阅读 · 0 评论 -
python算法与数据结构-冒泡排序算法
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。冒泡排序(英语:bubble sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢”浮”到数列的顶端。代码如下所示:# coding:utf-8def bubble_sort(alist):...原创 2020-06-30 14:52:44 · 131 阅读 · 0 评论 -
python算法与数据结构-冒泡排序算法(32)
阅读目录一、冒泡排序介绍 二、冒泡排序原理 三、冒泡排序图解 四、冒泡排序总结 五、冒泡排序python代码实现 六、冒泡排序C语言代码实现 七、冒泡排序的优化 八、冒泡排序的时间复杂度 九、冒泡排序算法的稳定性一、冒泡排序介绍 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的..转载 2020-06-30 14:43:13 · 163 阅读 · 0 评论 -
Python实现顺序表
计算机内存是一个连续的存储空间上面的一个字节正好是一行,也就是8位。a=1占了4个存储单位,不同类型,占的存储单元不一样,如下所示:代码测试如下:#创建顺序表class Sequence_Table(): #初始化 def __init__(self): self.date = [None]*100 #占位了100个 #print(type(self.date)) #<class 'list'> ..原创 2020-06-27 17:31:10 · 1965 阅读 · 0 评论 -
python算法与数据结构-顺序表(39)
阅读目录1、顺序表介绍 2、顺序表的结构 3、顺序表的两种基本实现方式 5、元素存储区扩充 6、顺序表的增删改查操作的Python代码实现 7、顺序表的增删改查操作的C语言代码实现1、顺序表介绍 顺序表是最简单的一种线性结构,逻辑上相邻的数据在计算机内的存储位置也是相邻的,可以快速定位第几个元素,中间不允许有空,所以插入、删除时需要移动大量元素。顺序表可以分配一段连续的存储空间Maxsize,用elem记录基地址,用length记录实际的元素个数,即顺序表的长度,...转载 2020-06-27 17:22:54 · 146 阅读 · 0 评论 -
C语言学习总结(四)——数据结构
一、定义数据元素和数据元素之间的关系,也可称之为数据的组织形式,包括3方面逻辑结构:集合线性结构 1:1层次结构(树形结构)1:n图形结构(网状结构)n:n存储结构:顺序存储:讲数据元素按照逻辑上的先后次序存储到一片连续的内存中(一般用数组实现)链式存储:讲数据元素存储在内存的不同位置(每个数据元素单独存),利用指针来建立元素之间的联系(用指针)索引存储散列存储运算:增删改查等二、线性结构顺序表特点:逻辑结构和存储结构一致,存储密度高,但是插入和删除等运算复杂度较高,且要求系转载 2020-06-22 17:22:23 · 389 阅读 · 0 评论 -
python机器学习库xgboost——xgboost算法(有分类和回归实例)
分享一个朋友的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开docker/kubernetes入门视频教程全栈工程师开发手册 (作者:栾鹏)python数据挖掘系列教程安装xgboost目前还不能pip在线安装,所以先在网址https://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboost 中下载wh...转载 2020-04-15 00:28:02 · 5481 阅读 · 0 评论 -
LightGBM算法总结
1 LightGBM原理1.1 GBDT和 LightGBM对比1.2 LightGBM 的动机1.3 Xgboost 原理1.4 LightGBM 优化1.4.1 Histogram 算法1.4.2 带深度限制的 Leaf-wise 的叶子生长策略 1.4.3 直方图加速1.4.4 直接支持类别特征1.4.5 LightGBM并行优化1.5 其他注意2 lightGBM...转载 2020-04-15 00:19:28 · 725 阅读 · 0 评论