![](https://img-blog.csdnimg.cn/20200221190445681.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构算法
主要存放内存和数据结构和算法相关知识
AI study
只有充实的每一天才能配得上完美的自己!
展开
-
【数据结构与算法】学习路线
下面是工作中或者面试中经常用到的数据结构与算法相关的知识点,也是我曾经用到过的,如果想要XMind格式的,那就请在下方评论,我会在第一时间回复并发给你,下面是给大家罗列出来的:...原创 2020-06-18 00:34:35 · 577 阅读 · 2 评论 -
【算法基础】哈希算法
目录7.1哈希表(散列表)7.1.1直接寻址法7.1.2除法哈希法7.1.3哈希碰撞7.1.4评价7.1.5代码实现7.2一致性hash7.3局部敏感哈希(LSH)7.3.1为什么要有局部敏感哈希?7.3.2文档相似度计算7.3.3文档shingling7.3.4保持相似度矩阵表示7.4.5最小哈希参考文档:7.1哈希表(散列表)7....原创 2020-01-06 15:15:30 · 454 阅读 · 0 评论 -
【数据结构】堆栈队列
目录5.1堆栈队列5.1.1堆的实现5.1.2队列实现5.1.3双端队列5.1堆栈队列5.1.1栈的实现# 使用顺序表实现栈# push:压栈# 如果是顺序表,压栈和出栈最好是尾部,链表最好是头部class Stack: def __init__(self): self.__list=[] def push(self,item)...原创 2020-01-08 20:17:13 · 124 阅读 · 0 评论 -
【算法基础】分治思想
1.1分治算法1.1.1分治算法思想将原问题分解成与“原问题相同但是规模更小”的子问题,并可以反复执行这个过程,使得问题规模减小到可以求解为止。下面我们将举出是三个例子来介绍分治算法1.1.2.快速排序问题描述:给定1000个数,从小到大进行排序。问题分析: 先选择一个“标准”A,按照“比A小”和“比A大”将原来的数列分为两类,这样,只需要将两个子序列分别排好序,然后再合并到一...原创 2020-01-07 20:55:50 · 1052 阅读 · 0 评论 -
【算法基础】KMP算法
KMP是一种字符串匹配的算法:问题描述:两个字符串,从一个字符串中找出另一个字符串的位置,如果该字符串在另一个字符串中存在,那么返回其索引位置,如果不存在返回-1KMP算法:这种问题除了使用KMP算法外,我还在其他文章中提到了另外几种方法:字符串查找...原创 2020-01-07 17:52:02 · 93 阅读 · 0 评论 -
【数据结构】树型结构
目录3.1树的基本概念3.1.1.什么是树及其特点3.1.2.树的术语3.1.3.树的种类3.1.4树的存储与表示3.1.5应用场景3.2二叉树3.2.1二叉树基础3.2.2完全二叉树3.2.3满二叉树3.2.4平衡二叉树3.2.5二叉查找树(二叉排序树)3.2.6霍夫曼树3.3其他树3.3.1B树3.3.2B+树3.3.3...原创 2020-01-03 22:07:32 · 579 阅读 · 0 评论 -
【算法基础】查找算法
目录2.1查找算法简介2.1.1算法简介2.1.2衡量指标2.1.3算法分类2.2顺序查找2.2.1算法思想2.2.2代码实现2.2.2复杂度分析2.3二分查找2.3.1算法思想2.3.2代码实现2.4插值查找2.4.1算法描述2.4.2代码实现2.4.3性能评估2.5斐波那契查找2.5.1算法描述2.5.2算法实现...原创 2020-01-03 22:07:03 · 617 阅读 · 0 评论 -
【算法基础】排序算法
目录1.1基础入门1.1.1算法效率的衡量1.1.2排序算法图谱1.1.3算法效率比较2.1交换排序2.1.1冒泡排序2.1.2快速排序3.1插入排序3.1.1直接插入排序3.1.2希尔排序4.1选择排序4.1.1直接选择排序4.1.2堆排序5.1归并排序5.1.1归并排序6.1其他排序6.1.1桶排序6.1.2基数排序6...原创 2020-01-02 22:18:37 · 169 阅读 · 0 评论 -
【算法基础】字符串的查找
1.已知两个字符串,找到一个字符串在另一个字符串中的位置1.方法一:使用python自带的函数查找s1='acjhncjnfkdghf's2='cjn's1.find(s2)2.方法二:自己实现查找s1='acjhncjnfkdghf's2='cjn's3=s2[0]length=len(s1)m=-1for i in range(length): if ...原创 2019-12-24 18:31:29 · 170 阅读 · 0 评论 -
【数据结构】链表
4.1链表4.1.1单链表# 结点class SingleNode: def __init__(self,item): # 存放数据元素 self.item=item # 存放下一个结点标识 self.next=None # 单项链表的实现class SimgleLinkList: # ...原创 2019-12-24 18:17:27 · 190 阅读 · 0 评论 -
【算法基础】杨辉三角
1.题目描述输入:5输入:11 11 2 11 3 3 11 4 6 4 12.python代码def test(n): res=[] if n==0: return None elif n==1: l1=[n] res.append(l1) return res els...原创 2019-12-24 11:41:35 · 118 阅读 · 0 评论 -
【算法基础】动态规划
1.动态规划思想1]思想分治法思想:就是将一个大问题拆分成很多小问题,小问题继续拆分成更小的问题,直到该拆分成的小问题能够很容易的被解决2]用例子说话一家公司,可能有总经理,部门经理,总监,组长,员工,又到了考核期,公司想选出最优秀的3个员工.一般情况下总经理会让部门经理选出自己手下最优秀的3个人,而部门经理又让总监找出自己手下最优秀3个员工,以此类推,其实这种思想就是动态规划的思想.3...原创 2019-12-11 19:46:05 · 115 阅读 · 0 评论 -
【算法基础】排列组合算例
import numpy as npd={}for i in range(26): d[i+1]=chr(97+i)from itertools import product from itertools import combinations import itertools d={}for i in range(26): d[i+1]=chr(97+i)...原创 2019-12-05 11:26:39 · 282 阅读 · 0 评论 -
【数据结构】数据结构总结
一、基本概念算法1】概念解决问题的思想和方法。2】五大特性输入:0个或者多个输出:1个或者多个有穷性:有限的步骤和可接受的时间确切性:执行的每一步都有确切的含义,不会产生歧义可行性:执行的每一步都是可行的。时间复杂度1】基本概念就是执行某段程序需要的总步数,然而根据时间复杂度的趋势大致相同,我们采取“大O表示法”,也就是去除这些步骤的旁枝末节,得到大致的表达式,不论...原创 2019-06-09 20:40:08 · 173 阅读 · 0 评论