数据结构与算法
Spratumn
行动派
展开
-
堆与堆排序(python实现)
class Heap: """ 既可以通过单个元素插入的方式建堆 也可以通过build_heap()传入现有列表的方式建堆(建堆时容量要匹配) """ def __init__(self,capacity): """ :param capacity: 堆的容量,可通过现有列表的len传入 """ ...原创 2019-09-18 15:00:09 · 173 阅读 · 0 评论 -
经典排序算法分析对比(python实现)
# 冒泡排序 O(n^2)#本地排序def bobble_sort(arr): n = len(arr) for i in range(n-1): # 遍历n-1次 for j in range(i+1,n): # 每次遍历中,与首位比较n-i次 if arr[i]>...原创 2019-09-16 15:23:13 · 168 阅读 · 0 评论 -
KMP算法(python实现)
def get_max_same_str(s): """ 获取前后缀相同的最大长度 :param s: 要计算的字符串 :return: """ if len(s) == 1: return 0 l = len(s) i = l-1 j = 1 # 从最长前后缀开始比较,找到相等时直接返回 wh...原创 2019-09-16 09:44:09 · 243 阅读 · 0 评论 -
自定义二叉树(python)及相关算法
# 自定义队列class Node(): def __init__(self,data,next=None): self.data = data self.next=nextclass myque(): def __init__(self): self.length=0 self.left=None ...原创 2019-08-31 13:01:23 · 307 阅读 · 0 评论 -
python实现二叉树几种遍历
目录二叉树类中序遍历先序遍历后序遍历层序遍历二叉树类首先自定义一个二叉树类,下面所用到的二叉树均基于此二叉树类。class TreeNode(): def __init__(self,value=None,left=None,right=None): self.val=value self.left=left self.right=ri...原创 2019-08-28 17:03:03 · 225 阅读 · 0 评论 -
计算数组逆序数(使用归并排序的分治思想)
分治思想分解解决子问题合并可以使用分治思想的问题有哪些特点:原问题与分解成的子问题具有相同的模式原问题分解成的子问题可以独立求解,子问题之间没有相关性具有分解终止条件可以将子问题合并成原问题,并且合并操作复杂度不能太高以下以面向对象的方式实现归并排序相关功能:class Merge_sorter: def __init__(self): self...原创 2019-09-19 13:49:00 · 258 阅读 · 0 评论 -
N皇后问题
class Queens: def __init__(self,num=8): """ 传入num指定方格尺寸 :param num: """ self._num = num self._result = [None]*self._num self.lay_queen(0) ...原创 2019-09-19 15:49:00 · 131 阅读 · 0 评论 -
MySQL数据库索引实现原理
本文来选自王争老师的极客时间—数据结构与算法之美索引的功能需求:1.根据某个值查找数据2.根据区间值来查找某些数据非功能性考虑因素:1.执行效率2.存储空间假设可能的实现方式:跳表跳表是在链表之上加上多层索引构成的。它支持快速地插入、查找、删除数据,对应的时间复杂度是 O(logn)。改造的二叉查找树树中的节点并不存储数据本身,而是只是作为索引。把每个叶子节点串在一条链表上...原创 2019-09-24 19:14:10 · 146 阅读 · 0 评论