算法
万能菜道人
博客的书写一点都不好看,有的挺乱的,我在试着优化。
展开
-
文本自动对齐功能探索实现
自动对齐的支持:思路:没有什么高端算法基础。目前想到的是简单地保存前缀空格和,根据语句与当前空格和预测下一行空格和。if elif else endif 支持例如遇到If下一行预测就是前缀加一个tab大小的空格,而elif ,else ,endif则无法使用预测的前缀空格,因为他们要特殊地和对应的if对齐,所有要保存之前所有遇到if的前缀,形成队列,直接使用最后一次保存的值,而预测给当前的值直接赋值给下一行预测,需要注意的是注意结束标志endif则需要将预测的值减去一个tab赋给下一行的预原创 2021-05-25 18:36:43 · 309 阅读 · 0 评论 -
Python遍历两个list所有元素的组合,使用笛卡尔积
没文化真可怕,唉,一个简简单单使用笛卡尔积的东东,让我搞了好一会还没搞好。对于将两个和多个list的元素进行全组合的使用,使用笛卡尔积就很简单,python代码更是快乐。import itertools三个。。。:...原创 2020-02-17 16:59:55 · 8210 阅读 · 1 评论 -
二叉树的层次遍历Python3处理
个人在层次遍历是有卡顿,没有想到使用队列要进行处理,递归确实没有处理出来。先看代码:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.righ...原创 2020-02-07 16:21:37 · 390 阅读 · 0 评论 -
Spline算法:输入几个点,输出一条曲线的点。
/* * spline.h * * simple cubic spline interpolation library without external * dependencies * * --------------------------------------------------------------------- * Copyright (C) 2011, 2014原创 2017-11-10 11:51:22 · 4320 阅读 · 2 评论 -
二叉树的用途之一二叉搜索树
在学习数据结构的时候,也曾经学习过二叉树,以及前序排列、中序排列、后序排列等等,但是一直无缘使用它!二叉树可以干什么? 排序有快速排序,归并排序,查找有二分法,甚至直接遍历查找,二叉树的使用很少。 实际场景使用上,用的最多的是二叉平衡树,有种特殊的二叉平衡树就是红黑树,Java集合中的TreeSet和TreeMap,C++STL中的set,map以及LInux虚拟内存的管理,都...原创 2017-07-21 15:49:58 · 20740 阅读 · 1 评论 -
快速排序5分钟快速学习(小白指南)
快速排序在排序中占有重要的地位,今天我和你一起来学习一下快速排序究竟有什么魅力可以让大家使用!我们先看看快速排序的基本步骤:假设有n个变量的数组S[n]1.首先设置两个变量i,j,设置i = 0,j = n-1;2.我们要找到一个类似中间值的数据为关键数据,可以设为S[0],更好的是找到一个更接近中间值的数来进行处理,可以进行优化。3.第三步是关键,分为两步1)从最原创 2017-07-19 20:38:36 · 524 阅读 · 0 评论 -
归并排序菜鸟入门
归并排序是一种稳定快速地排序方法,该算法采用分治法的一个应用。也许这个名字刚听起来不是很好听,我一直将他说成是并归排序哈哈。为什么会叫归并排序呢?不知道大家有没有这个疑问?归并排序的整体思路就是先归后并,归是递归,将数组分为两部分,然后将左右两部分再分别递归分配咯,并就是合并,把分开的各个数组依次合并,最终完成一个无序数组的排序啦。来我们再看看归并排序的基本步骤:1.首先将数组分为原创 2017-07-20 13:49:30 · 855 阅读 · 1 评论 -
二分查找算法小白入门
二分查找是面试时很常出现的题目,今天就来大概学习一下二分查找算法。首先我们要考虑这种算法的优点有哪些?二分查找法的优点是查找速度快,比较次数少,平均性能好。缺点自然是需要要求一个有序的数组来进行查找,如果无序的首先要进行排序、步骤:一个由低到高的数组。1.将数组分为两半,将中间值和要查找的数进行比较,小于中间值则选择前半部分,大于则选择后部分。2.将选择的半部分继续分为原创 2017-07-20 09:50:09 · 286 阅读 · 0 评论 -
堆排序菜鸟入门
了解过快速排序和归并排序之后,还有一个比较实用而且和前两者的时间效率相同的排序自然要学习一下了。在有了那么多高手的博客,我还写这个,主要是为了自学,加个原创是为了有激情哈哈直接来实例: Arr[14] = {9,8,5,2,1,4,7,6,3,0,15,5,9,4};将该数组进行堆排序。首先,讲二叉堆的两个性质原创 2017-08-01 19:46:30 · 453 阅读 · 0 评论 -
算法总览
1.查找和排序查找:不外乎顺序查找,二分查找,哈希表查找和二叉树查找。顺序查找:一个个遍历查找。二分查找:元素必须是有序的,用中间值判断要查找的值在哪一半,然后再找一半的中间值进行比较。改进是在中间值的取值,改为自适应的“”中间值“可以更快的找到要查找的值。二叉树查找:创建二叉搜索树,即左节小于根,根小于右节点的二叉树。哈希查找:使用键值对,以空间换时间的算法。原创 2017-07-15 16:24:32 · 316 阅读 · 0 评论