算法
tuboshuShaoBaTu
这个作者很懒,什么都没留下…
展开
-
红黑树基本思想+python实现(未完结)
class Node(object):def init(self, key=None, left=None, right=None, p=None, color=None):self.key = keyself.left = leftself.right = rightself.p = pself.color = colorclass Tree(object):def init(s...原创 2019-11-11 08:08:00 · 179 阅读 · 0 评论 -
二叉树所有基本操作+ python实现+ 理论随机二叉树运行效率分析(完结)
二叉树大家都很熟悉,这里只是用python手写了一份而已,就在分析的后面在这之前我们可以讨论一下一个随机构建的二叉树的性能我们对含有n个元素的二叉树的基本操作基本都可以在O(h)内完成,我们要讨论随即构建的二叉树的期望高度:用 表示随即构建的二叉树的高度用表示二叉树的指数高度用表示将二叉树排好序之后树根素所在位置并且在未排序之前我们的对于{1,2,3,4,5.。。。。。n}都是等可...原创 2019-11-07 10:02:05 · 430 阅读 · 0 评论 -
两种线性时间选取第i小的元素的方法+ python实现(未完结)
先看第一种比较简单并且也比较容易理解的`思路如下:快速排序的核心过程可以直接得到我们当前选择元素在最后将所有元素排好序后当前元素所在位置。所以我们可以考虑对快速排序进行改编,由于我们不需要知道每个元素的具体位置所以,我们可以选择性地执行快速排序的核心过程。随机选取元素然后和第一个元素进行交换,并且最终将所有小于和大于当前选取的元素的其他元素进行重新排序,小的排在左边大的排在右边。代码如下...原创 2019-10-31 18:02:22 · 618 阅读 · 0 评论 -
kmeans++python代码
import randomimport mathimport timeimport numpy as npclass FindList(): def getCurrentResultList(self, currentList, currentRandom): resultList = [] for temp in currentList: ...原创 2019-09-23 08:58:53 · 700 阅读 · 1 评论 -
基数排序原理,背景+python实现+基数排序升级版本(完结版本)通过对输入数据进行多位处理极大降低空间复杂度并优化时间复杂度
Herman hollerith基于打孔卡(punch cards)技术,他发明了打孔卡片制表机(Tabulation Machine),是电脑的前身。1896年,创办了制表机器公司(Tabulating Machine Company),后来成为IBM的前身。同时也决定了大部分终端都是80字符。这一切都是源自基数排序这种用在卡片排序机上的算法。在排序机中的卡片有80列,机器会在每列中的12个...原创 2019-09-10 08:39:09 · 326 阅读 · 0 评论 -
堆排序+python实现
首先堆应该是一个数组,它可以被看成一个近似的(除了最底层之外)的完全二叉树。最大堆:所有节点都不大于根的值。当然这颗树的所有子树也都要满足这个性质。现在我们设想我们已经有一个最大堆,我们在插入一个元素的时候可能会违背最大堆的性质。为了保持最大堆的性质。逐层对比,直到找到元素正确的位置。当我们用list存储堆并且随机插入一个无序的数据的时候。我们传入,数组和当前无序数据的索引i# 首先比较...原创 2019-09-03 09:10:18 · 226 阅读 · 0 评论 -
kmeans原理+python实现
话不多收先上代码哈哈啊哈哈import randomimport mathclass FindList():def getCurrentResultList(self, currentList, currentRandom):resultList = []for temp in currentList:currentDistance = []for currentR in curr...原创 2019-08-12 22:08:33 · 394 阅读 · 0 评论 -
计数排序原理,局限加python实现
C【i】用来记录某些数值出现的频率因此将她们初始化为0然后对于每个A【j】的值我们会递增代表A【j】的计数器的值最后C【i】会给出等于数值i的元素的数量然后我们会对前缀做加法这使得c【i】表示小于或等于i的元素数目而不是等于i的数目最后进行分配:j会从数组尾部开始递减至数组头部1我们做的就是取出A的最后元素A【n】我们看计数器在c数组中找到相应值而这说明了这个元素在B中...原创 2019-08-04 15:14:55 · 189 阅读 · 0 评论 -
快速排序+python实现
快速排序的核心思想就是选取一个元素,循环递归将比选取元素小的元素放在左边,大的放右边。例如我们每次选取所切list最右面的元素,那么我们要设立一个标记在最左面第一位,如果循环中发现有元素比我们选定的最右面的元素小那么就将它和标记位交换,并将标记位向后移动一位。这样就一直可以保证标记的位比我们每次所选的最右面的元素大,循环到我们所选的最右面元素的时候就将我们选的元素和标记位交换,这样就完成了让标志...原创 2019-08-04 13:54:04 · 172 阅读 · 0 评论 -
主定理推导fn升级版
对于形如:Tn=aT(n/b)+fn的(严格要求a大于等于1的,b也必须大于1)可以将主要问题不断变小的问题可以通过主定理直接求出时间复杂度。PS : 并且要求fn渐进趋正(当n足够大的时候fn一定要是正数)因为主定理的思路就是比较非递归的函数fn和的大小并且已知 =如图已知每一层把问题分解成上一层额的1/b所以第0层的任务量为fn,之后每一层的任务为所以总计任务量为 所以当...原创 2019-08-04 11:12:28 · 637 阅读 · 0 评论 -
写在最前面:学习算法的意义
我们都知道更好的算法往往给计算机带来了更好的性能。但是我们都知道在现在我们的日常生活中性能很多时候并不是第一位的。比如数据信息安全,用户体验,正确性,健壮性等等都是比性能更加重要的。...原创 2019-08-03 14:55:25 · 1270 阅读 · 0 评论