数据结构和算法
数据结构和算法
极客点儿
但行好事,莫问前程
展开
-
Python3 实现 KMP 算法核心 PMT
有些算法,适合从它产生的动机,如何设计与解决问题这样正向地去介绍。但 KMP 算法真的不适合这样去学。最好的办法是先搞清楚它所用的数据结构是什么,再搞清楚怎么用,最后为什么的问题就会有恍然大悟的感觉。KMP 算法的核心,是一个被称为部分匹配表 (Partial Match Table 简称: PMT) 的数组,接下来我们使用 Python 来实现 PMT。如果不了解 KMP 算法的,我建议你先去完完整整的看下这个算法,因为本文只涉及大屏 KMP 算法的核心 PMT。#!/usr/bin/env p.原创 2021-07-15 15:18:51 · 293 阅读 · 0 评论 -
Python3 使用 sqlalchemy_mptt 实现预排序遍历树算法
#!/usr/bin/env python3# -*- coding: UTF-8 -*-from sqlalchemy import Columnfrom sqlalchemy import create_enginefrom sqlalchemy import Integer, Stringfrom sqlalchemy.orm import sessionmakerfrom sqlalchemy.ext.declarative import declarative_basefrom s原创 2021-07-15 15:10:17 · 461 阅读 · 0 评论 -
数据结构和算法(第 3 章):集合
集合是数据结构中基本的结构,它完全和数学中的集合一致,那下面就来看下数学中的集合到底是什么?一、集合是什么集合是指具有某种特定性质的具体的或抽象的对象汇总而成的集体。其中,构成集合的这些对象则称为该集合的元素。举几个例子,如果以人类为一个集合,中国人就是该集合中的一个元素。如果以 0-100 的自然数为一个集合,0 就是该集合中的一个元素,记作 0∈100,101 不是该集合中的元素,就记作 0∉100。 更详细的请打开高数(一)第一章仔细看看。二、集合的特性集合有下面三个特性:确定性: 给原创 2020-07-14 12:46:49 · 647 阅读 · 0 评论 -
数据结构和算法:预排序遍历树算法(MPTT)
一、多级分类问题在实际开发的过程中,会经常遇到多级分类的问题。譬如,导航栏、菜单、商品种类、多级联动、字典表等等的多级分类问题。这时可以新增一个 pid 字段进行数据关联,它本质上其实就是一棵树。树就可以很好的解决多级分类的子分类查询。但是这种方式有一个致命的问题:查询效率过低!!!当我们在程序里查询某个子节点时,要先从根节点进行递归查询,时间复杂度是 O(n)。那么有没有一种方式,改进树的查询效率呢?答案是肯定的!很多树都在标准的树上进行改进过,比如二叉树、红黑树、堆等等。但这都不是重点,今天要原创 2020-07-01 16:37:38 · 2465 阅读 · 1 评论 -
数据结构和算法(第 2 章):复杂度分析
一、复杂度分析首先要明确一点,数据结构和算法本质是解决“快”和“省”的问题。要描述一个算法的好坏就需要用到复杂度分析了,复杂度分析可分为如下两种。时间复杂度空间复杂度时间复杂度就是描述算法的快,空间复杂度则是描述算法的省。一般说的复杂度都是时间复杂度,毕竟现代计算机存储空间已经不那么拮据了,时间复杂度是我们重点研究的内容。二、大 O 复杂度表示法首先看一段代码,求从 1~n 的累加之和。int demo(int n) { int i; int sum = 0;.原创 2020-06-29 18:32:22 · 532 阅读 · 1 评论 -
数据结构和算法(第 1 章):什么是数据结构和算法
不知道你有没有这样的疑惑?为什么一说数据结构或者算法,它们总是会同时出现,这不应该是两门课吗?为什么要整合到一起呢?接下来我们就带着问题去了解一下数据结构和算法之间的关系。一、数据结构和算法之间的关系什么是数据结构?什么是算法?你去百度肯定能得到一堆结果,但这些搜索出来的结果根本就不是人能看懂的。所谓定义就是把所有人能看懂的问题说成谁也看不懂的词。其实,这样是没办法的事。为了定义的明确和严谨,就得加很多限制条件,这样就不会让定义模棱两可,但是这样做的结果就是谁也看不懂。下面我们就试着还原数据结构原创 2020-06-24 16:05:20 · 532 阅读 · 0 评论 -
数据结构和算法(目录)
数据结构和算法(第 1 章):什么是数据结构和算法原创 2020-06-24 16:00:36 · 288 阅读 · 0 评论